首页 > 系统 > Android > 正文

Android自定义View实现简单文字描边功能

2019-10-21 21:33:49
字体:
来源:转载
供稿:网友

本文实例为大家分享了Android实现简单文字描边功能的具体代码,供大家参考,具体内容如下

效果图:

Android,View,文字描边

实现代码:

package com.example.zhangyu.myview.widget;import android.content.Context;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.Picture;import android.graphics.Rect;import android.graphics.RectF;import android.os.Build;import android.support.annotation.Nullable;import android.support.annotation.RequiresApi;import android.util.AttributeSet;import android.view.View;import com.example.zhangyu.myview.R;public class TouchPullView extends View { //圆的半径 private float mCircleRadius; private Paint paint; private Rect rect=new Rect(); private int count; public TouchPullView(Context context) {  super(context);  init(); } public TouchPullView(Context context, @Nullable AttributeSet attrs) {  super(context, attrs);  init(); } public TouchPullView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {  super(context, attrs, defStyleAttr);  init(); } @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) public TouchPullView(Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) {  super(context, attrs, defStyleAttr, defStyleRes);  init(); } /**  * 初始化  */ private void init() {  paint = new Paint(Paint.ANTI_ALIAS_FLAG);  //设置抗锯齿  paint.setAntiAlias(true);  //设置防抖动  paint.setDither(true);  //设置填充方式  paint.setStyle(Paint.Style.FILL_AND_STROKE);  //View的点击事件  setOnClickListener(new OnClickListener() {   @Override   public void onClick(View v) {    count++;    invalidate();//重新绘制   }  }); } @Override protected void onDraw(Canvas canvas) {  super.onDraw(canvas);  //设置方形画笔,背景。  paint.setColor(Color.YELLOW);  //先绘制底板  canvas.drawRect(0, 0, getWidth(), getHeight(), paint);  float x = getWidth() / 2;  float y = getHeight() / 2;  float offset = getWidth()/6;  //绘制圆形  paint.setColor(Color.GRAY);  mCircleRadius = offset*1.41f;  canvas.drawCircle(x, y, mCircleRadius, paint);  //绘制图片  Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.pic1);  if (bitmap != null) {   canvas.drawBitmap(bitmap,null,new RectF(x-offset,y-offset,x+offset,y+offset),paint);  }    //绘制文字外层的文字,边框  String s = String.valueOf(count);  paint.setStrokeWidth(10);  paint.setColor(Color.RED);  paint.setTextSize(100);  paint.getTextBounds(s,0,s.length(),rect);  float textWidth = rect.width();  float textHeight = rect.height();  x = getWidth()/2-textWidth/2;  y = getHeight() / 2+textHeight/2;  canvas.drawText(s, x, y, paint);  //绘制文字  paint.setColor(Color.BLUE);  paint.setStrokeWidth(0);  canvas.drawText(s, x, y, paint); }}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持VEVB武林网。


注:相关教程知识阅读请移步到Android开发频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表