您的位置:首页 > 其它

自定义View绘制心得(自定义view和自定义viewGroup)

2016-03-09 21:17 204 查看
自定义View主要分为两大部分:

第一部分是view的绘制:

大体步骤

1.测量大小

2.放置位置

3绘制

第二部分是view事件处理:

主要是view滑动(7种):

通过ontouchListener()

1获取偏移()

2将偏移量放进位置方法中改变位置。

大部分自定义view基本分为以下

1.继承自view,2继承自viewGroup

测量

view的测量主要和父容器和自身的Layoutparms有关。

继承自view测量时当属性参数是WRAP_context时 需要重写onMeasure() 通过Measuresprc类的Mode和size,判断自行填写大小(覆写父类setMeasuredDimension(,))

而继承自ViewGroup类测量时。当属则需要通测量过子View大小从而重新决定自己的大小。(通常宽高可能是子view的和)。注意:只能获取的是测量值Measureheight.

放置

veiw放置方式 获取父布局layoutparams 或者layout()方法

viewGroup放置则先onLayout()方法对其中的子布局调用Layout()进行依次放置(getcount(),和getchildAt()获取子控件)

绘制

ondraw()方法中参提供了一个Canvas,这个Canvas系统提供了许多绘制API,例如drawPoint,drawline,drawPath,drawBitmap,drawshape等

同时提供了方法,这些方法为坐标点绘制计算提供方便,rotate()和traslate()分别对坐标原点进行角度转换和平移。Save,和restore对图层保存和合并,另外对图层的管理通过栈的方式。两个方法,saveLayer(),saveLayerALpha(),restoreTocount(),restore(),对图层操作后决定了后面的操作是在哪个图层上。

viewGroup注意:

viewGroup可用addview在构造函数中添加子控件或者布局。要注意的是子控件的点击事件可以通过新建一个接口的,在viewGroup中回调接口方法,同时给出一个方法暴露接口。这样调用者自己就可以在用viewGroup的暴露的接口实现自己的逻辑了。


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: