Android自定义view之如何自定义view

自定义view主要有三个关键的知识点,布局、绘制、触摸反馈。

绘制:所谓绘制指的就是控件内容的显示。

自定义绘制的实现:Android里的绘制是在每个view的绘制方法里发生的, 一个view的绘制方法里写了什么代码,它就会绘制什么内容,而自定义绘制就是通过重写绘制方法,插入你自己的绘制代码来实现的,绘制方法不是一个方法,有好几个,其中最常用的就是onDraw();。onDraw()这个绘制方法它主要负责的是view的主体的绘制。例如TextView的文字,ImageView的图像,都是在onDraw()方法里绘制的,具体执行绘制操作的是canvas参数,例如你写一行canvas.drawCircle();你的view就会在内部画一个圆,显示给用户看。在Android中canvas就是一个绘制工具,它唯一的功能就是绘制。

除了前面说的那个drawCitcle(),Canvas还有很多方法都可以用来绘制drawCircle() drawRect(),drawPath() drawBitmap()drawText(),这些方法中值得注意的是Paint参数,paint负责提供绘制使用的颜色和风格信息,所谓风格就是列入你画的圆是空心还是实心,线条粗细是多少有没有阴影等等这些附加信息除了这几个paint还可以提供很多其他的风格信息。paint这个类对于绘制非常关键。这个就是Canvas的绘制。

除了直接的绘制Canvas还有一些方法,它们对绘制进行辅助,主要有两类:一类是绘制范围的裁剪,这个很好理解,你通过裁剪来把绘制限制在某个范围内,然后当你绘制的时候,超出返回的会被切掉,这些方法全部以clip-打头,使用也很简单。另一类是绘制内容的几何变换,什么是几何变换呢,我举个例子放大缩小就是几何变换的一种平移和旋转意识几何变换,还有错切,水平错切和垂直错切那么具体有哪些变化呢,你可以这么想一下,把你的绘制区域的四个顶点任意拉扯绘制的内容就会发生相应的变化,这些拉扯所对应的所有形变都是几何变化。

前面说的就是自定义绘制最核心的技巧,重写onDraw(),在里面用canvas的一些方法来进行绘制,配合上范围裁切和几何变换,来达到想要的效果。不过还有一个问题,绘制顺序,假设你写了一个自定义的Layout重写的它的onDraw(),然后在里面画了一些你想要的东西,之后你会发现当添加了子view之后绘制的内容会被子view盖住,如果这就是你想要的,那没问题。但如果你期望的是让他盖住子view而不是被子view盖住呢?怎么保证所有绘制的遮盖关系都符合你的要求呢?Android里面的绘制是按顺序的,先绘制的内容会被后绘制的盖住,前面说了,绘制方法不是一个,有好几个,其中ondraw这个方法只是用来负责主体内容的绘制的。另外还有一些方法,有负责绘制背景的有负责绘制前景的有负责整体内容绘制的,他们在整个绘制过程中都处于各自不同的一个位置,也就是不同的步骤,如果你对遮盖关系有你的特殊要求,那么你就需要去了解整个步骤,去了解每个绘制方法处于整个绘制过程中的哪个位置,然后在实际使用过程中你就知道自己应该选在哪一个绘制方法来重写,从而来达到你想要的绘制效果。

总结

方式:重写绘制方法(最常用的是ondraw)

绘制的关键:canvas的使用它是一个绘制工具,主要有绘制和对绘制的辅助这两类方法。绘制使用的是draw打头的一系列方法。方法的参数有一个关键类 paint 他用来板锉颜色和各种风格。对绘制的辅助有两种,一种是范围裁剪,一种是几何变换。

使用不同的绘制方法来控制遮盖关系。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值