美文网首页
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