Android自定义View简单Demo,文字描边

在这里插入图片描述

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);

    }
}

猜你喜欢

转载自blog.csdn.net/yu540135101/article/details/84928773