美文网首页
Android自定义View(2) 《Paint介绍》

Android自定义View(2) 《Paint介绍》

作者: 非典型程序猿 | 来源:发表于2021-08-22 14:36 被阅读0次

概述

在Android中,我们经常会需要去绘制一些自己需要的控件,所以继承自View的自定义View就产生了。这篇文章主要介绍在View中的重要类,Paint,画笔类。

Paint的作用

如果把Canvas比作画布的话,那么Paint就是画笔,负责画出各种图形,设置画笔的参数非常多,这里我们只简单介绍几个重要的方法,其余的可以自行实践。

  • 初始化,
Paint paint = new Paint();

这样我们就完成了Paint的初始化了,下面我们用一个简单的例子对Paint的使用进行说明

用Paint绘制一个简单的圆

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.util.Log;
import android.view.View;

import androidx.annotation.Nullable;

/**
 * create by xu.tian
 *
 * @date 2021/8/22
 */
public class MyView extends View {

    public static final String TAG = MyView.class.getSimpleName();

    private Paint paint = new Paint();
    private int width ;
    private int height ;

    public MyView(Context context) {
        super(context);
    }

    public MyView(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
    }

    public MyView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    public MyView(Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) {
        super(context, attrs, defStyleAttr, defStyleRes);
    }

    @Override
    protected void onDraw(Canvas canvas){
        super.onDraw(canvas);
        Log.d(TAG,"onDraw");
          // 设置画笔的宽度
        paint.setStrokeWidth(5f);
        // 设置画笔的颜色
        paint.setColor(Color.RED);
        // 设置画笔的Style
        paint.setStyle(Paint.Style.FILL);
    }

    @Override
    protected void onSizeChanged(int w, int h, int oldw, int oldh) {
        super.onSizeChanged(w,h,oldw,oldh);
        width = w ;
        height = h ;
        Log.d(TAG,"onSizeChanged width ---> "+w+"\n"+
                "height ---> "+h+"\n"+
                "oldw ---> "+oldw+"\n"+
                "oldh ---> "+oldh);
    }
}

用法很简单,我们在这里简单的在应用的画面中心绘制了一个红色的圆,运行效果如下


device-2021-08-22-141307.png

在这里,我们把Paint的初始化并没有放在onDraw()方法中,原因是在实际的应用中,onDraw的调用可能会比较频繁,为了避免反复创建Paint对象,所以我们只进行了一次Paint的初始化

Paint的几个常用的重要方法

  • setStrokeWidth(float width) 设置画笔的宽度,单位为px
  • setColor(int color) 设置画笔的颜色
  • setStyle(Style style) 设置画笔的Style
    主要使用有三种类型
    第一种是 Style.FILL 这是选择填充内部,比如这里我们使用后出现了一个内部填充的圆
    第二种是 Style.STROKE 这是选择带边界但内部不填充,如果使用后我们会得到一个内部空心的圆,就像下面这样


    device-2021-08-22-143249.png

第三种是 Style.FILL_AND_STROKE 带边界且内部填充,及既带边界又填充内部,就像下面这样


device-2021-08-22-143358.png

这里可能看起来 不是很明显,如果你把Paint的画笔宽度调宽一点后就会明显看出来这是前两种类型图的并集

总结

Paint中还有很多的参数可以设置,这里就不一一进行说明了,下一篇开始我们介绍如和利用Canvas绘制更多的图形

相关文章

网友评论

      本文标题:Android自定义View(2) 《Paint介绍》

      本文链接:https://www.haomeiwen.com/subject/qxnciltx.html