自定义view一步步前进

说到自定义view,一直以来想好好学下,可是在使用的时候多数还是百度开源的view,拿来用,最近时间比较宽松,就准备系统的来爬下坑。

其实自定义view,和我们现实画画是一样的原理,首先我们需要一张画布,对应于android中即是canvas,有了画布我们需要画笔,不然怎么勾勒我们想要的样子,对应它的就是paint,有了这两个我们已经可以做一些最简单的描绘,但是还有几点我们可能会比较关心的就是我们画出来的view有多大,该放在哪儿,要解决上述这两个问题就可以在继承view基类时重写onMeasure方法。

下面先来聊聊view的继承之后重写的些许方法,构造方法当然得先拿来提一提,view提供了三种父类继承,分别是:

public MyView(Context context) {
    this(context, null);
}

 public MyView(Context context, AttributeSet attrs) {
    this(context, attrs, 0);
}

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

第一种很明显就是创建view对象时调用的,默认传入context就行,第二个构造函数则是在xml中定义view时调用的,会把XML内的参数通过AttributeSet带入到View内,第三个构造函数的style信息,也会从XML里带入,当然可能还会有更多的参数,不过在合适的地方调用合适的构造函数就行。

定义完构造函数之后,主要工作就是在重写onMeasure和onDraw方法中,今天先不提到细节东西,来看看方法中参数,定义,下节再慢慢聊
onMeasure(int widthMeasureSpec, int heightMeasureSpec),onMeasure方法中有两个整型参数,看名字也可以明白就是宽高的测量,onDraw(Canvas canvas)传入的参数就是我们之前提到的画布,所有的绘制基础都是在这张画布上,当中有很多方法可以控制画布的移动旋转缩放,这些都会慢慢提到。
顺带提下,画笔的定义可以再构造函数中,当然如果你不喜欢,也可在onDraw方法中定义,这个并无大碍。
今天,就先写到这儿,博客菜鸟刚起步,无论简单复杂,争取日更,加油!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值