自定义View介绍及自定义属性

本文介绍了自定义View的相关知识,包括构造函数、常用控件如Paint和Canvas的使用,以及如何在自定义View中进行测量、布局和绘制。详细讲解了onMeasure()、onLayout()和onDraw()方法,并探讨了自定义属性的步骤和不同类型的属性值,如reference、color、boolean等。
摘要由CSDN通过智能技术生成

一、构造函数

共有4个,自定义View必须重写至少一个构造函数

public class MyView extends View {
   
    /**
     * 在java代码里new的时候会用到
     * @param context
     */
    public MyView(Context context) {
   
        super(context);
    }

    /**
     * 在xml布局文件中使用时自动调用
     * @param context
     * @param attrs
     */
    public MyView(Context context, @Nullable AttributeSet attrs) {
   
        super(context, attrs);
    }

    /**
     * 不会自动调用,如果有默认style时,在第二个构造函数中调用
     * @param context
     * @param attrs
     * @param defStyleAttr
     */
    public MyView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
   
        super(context, attrs, defStyleAttr);
    }

    /**
     * 只有在API版本>21时才会用到
     * 不会自动调用,如果有默认style时,在第二个构造函数中调用
     * @param context
     * @param attrs
     * @param defStyleAttr
     * @param defStyleRes
     */
    public MyView(Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) {
   
        super(context, attrs, defStyleAttr, defStyleRes);
    }
}

二、常用控件

1、Paint类——画笔

Paint类代表画笔,用来描述图形的颜色和风格,如线宽,颜色,透明度,和填充效果等信息,使用Paint时,需要先创建该类的对象,这可以通过该类提供的构造方法来实现。通常情况下,只需要使用无参数的构造方法来创建一个使用默认设置的Paint对象:

Paint paint = new Paint();
常用方法 方法说明
setARGB(int a, int r, int g, int b) 用于设置颜色,各参数值均为0~255之间的整数
setColor(int color) 用于设置颜色
setAlpha(int a) 用于设置透明度,值为0~255之间的整数
setAntiAlias(boolean aa) 用于指定是否使用抗锯齿功能,如果使用会使绘图速度变慢
setDither(boolean dither) 用于指定是否使用图像抖动处理,如果使用会使图像颜色更加平滑和饱满,更加清晰
setPathEffect(PathEffect effect) 用于设置绘制路径时的路径效果,例如点画线
setShader(Shader shader) 用于设置渐变,可以使用LinearGradient(线性渐变)、RadialGradient(径向渐变)或者SweepGradient(角度渐变)。
TileMode.REPEAT:重复的
TileMode.CLAMP:固定的–渐变过去
TileMode.MIRROR:镜像的,对称的
setStrokeCap(Cap cap) 用于当画笔的填充样式为STROKE或FILL_AND_STROKE时,设置笔刷的图形样式。
参数值可以是Cap.BUTT、Cap.ROUND或Cap.SQUARE。
主要体现在线的端点上
setStrokeJoin(Join join) 用于设置画笔转弯处的连接风格
参数值为Join.BEVEL、Join.MITER或Join.ROUND
setStrokeWidth(float width) 用于设置笔触的宽度
setStyle(Style style) 用于设置填充风格
参数值为Style.FILL、Style.FILL_AND_STROKE或Style.STROKE
setTextAlign(Align align) 设置字文本的排列方式
setTextSize(float textSize) 用于设置字体大小
setFakeBoldText(boolean fakeBoldText) 用于设置是否为粗体文字

2、Canvas类——画布

Android提供了强大的二维图形库,比较常用的是绘制几何图形,绘制文本,路径和图片等
比较常见的图形包括点,线,弧,圆形,矩形,在Android中,Canvas类提供了丰富的绘制几何图形的方法,通过这些方法可以绘制出各种几何图形

常用方法 方法说明
drawArc(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值