Android中自定义控件

来源:互联网 发布:属下知罪by枯目剧透 编辑:程序博客网 时间:2024/05/29 12:50

一、       自绘控件

继承View,重写View的onMeasure()、onLayout()、onDraw()步骤:

1在attrs.xml文件中定义组件属性(attr标签)、声明组件样式(declare-styleable标签),组件属性的取值类型有string,color,demension,integer,enum等。


2然后在布局文件中声明自定义的组件,组件的命名要指定为自定义View类的全路径,在布局文件里还要引入我们自己的包命名空间。


3继承View,自定义View的实现类,在View的构造方法中通过TypedArray获得view的属性,然后重写onMesure()方法和onDraw(),onMesure()方法用于测量view的宽和高,如果在布局文件中设置了view的layout_width和layout_height的具体值,系统帮我们测量的结果就是我们设置的结果,如果设置为WRAP_CONTENT或MATCH_PARENT系统帮我们测量的结果就是MATCH_PARENT的长度,宽高计算完毕后,必须调用setMeasuredDimession(int width, int height)进行设置,否则会抛出一个异常。OnLayout用于确定view的位置。

onDraw()方法提供了Canvas对象,在onDraw()方法中对Canvas绘制,最终显示的就是这个Canvas对象。


总结:xml文件中自定义View属性;继承View自定义View的实现类,在View的构造方法中加载xml文件,获得我们自定义的属性,重写onMesureonLayoutonDraw

二、继承布局类(如LinearLayout),组合多个已有的组件

1写xml布局文件,在布局文件中定义多个组件

2写布局类,在布局类的构造方法中加载布局文件,找到布局中的组件,之后在布局类中设置组件的属性(设置文字颜色、文字大小、设置onClickListener)

3在Activity的布局文件中引入自定义的view(用布局类的全路径引入),在Activity中通过findViewbyId找到自定义的view,通过view中的方法对view进行操作。

三、继承现有的组件(TextView、Button、ListView),添加新功能,形成自定义组件

参考:

http://blog.csdn.net/jdsjlzx/article/details/41113969

http://blog.csdn.net/lmj623565791/article/details/24252901/

http://blog.csdn.net/lianchen/article/details/48038969

http://blog.csdn.net/shineflowers/article/details/41348565



0 0
原创粉丝点击