自定义 View之一:实用入门

相信很多Android开发者在项目中有自定义View的需求,但苦于自定义View看似高深、复杂的写法(onMeasure、onLayout、onDraw),无从下手,不得不放弃。

本文旨在分享我的经验,与你一起快速的get自定义View的实用用法,五个步骤,快速入门。

相关代码已上传github,感兴趣的同学请下载。

背景:项目中常常用到如下图布局,平时我们会写一个线性布局,摆好这两个控件。但是,如果一个界面中多次用到该布局,好多同学就会重复摆添加刚才的布局,无形中增加很多的代码量,难看,维护起来也费劲。下面咱就以这个布局为例,看看怎么写一个自定义view来解决(其他view大家举一反三),过程会很简单,嘿嘿。

步骤一:组装view

先写一个xml布局(include_lefttv_rightet.xml),将两个控件放进去。这就是咱们自定义view的全部布局了。

自定义 View之一:实用入门_第1张图片

步骤二:载入view

新建一个类 LeftTextViewRightEditText1 继承 LinearLayout,在构造方法中,载入步骤一的布局,如下图:

完成步骤一、二后,view还缺少类似下图红框中的自定义属性,怎么办?

自定义 View之一:实用入门_第2张图片

步骤三: 配置view属性

1、给自定义view的增加属性,如text、textColor等等:在res->values->attr.xml中,增加如下图代码:

2、因为用到了自定义属性,需在用到view的布局的最外层,增加一行命名空间配置:xmlns:app="http://schemas.android.com/apk/res-auto"。

自定义 View之一:实用入门_第3张图片

其中:

1)、styleable的name可以随意定义;

2)、attr的name可以采用sdk中已定义好的,或自定义的。用sdk已定义好的则无需设置属性取值类型format,而自定义的需设置。另外,查看sdk中的attr,用AS的同学,可以在External Libraries->Android API **Platform->res->values->attrs.xml中查看。

步骤四:获取属性的值

给自定义view的属性设置值后,需要获取到这些值,代码如下:

第一行代码指定了,自定义view的属性,都是"LeftTextRightEditView"这个styleable下的。

获取属性值分两种:

1)获取sdk中定义好的属性,需要以 styleable_android_属性 的格式来获取(如获取android:textcolor,应写成LeftTextRightEditView_android_textColor);

2)获取自定义属性,直接写成 styleable_属性 (如获取rightHint,应写成LeftTextRightEditView_rightHint);

然后,通过TypedArray的get方法来获取到属性的具体值。

自定义 View之一:实用入门_第4张图片

步骤五:加载属性的值

最后一步,把步骤四获取到的属性值加载到TextView和EditText,代码如下图:

以上,就是自定义view的全部过程。本文并没有去讲(onMeasure、onLayout、onDraw),当然,它们很重要。但项目中更多的需要简单实用的自定义view方式,本文讲的方法就足够了。学完本文,大家可以再看看TextView的源码,会让你领悟更深的!

最后,总结一下本文所讲的自定义view的步骤:

1、将自定义view所需要的小view进行组装;

2、将组装后view的布局,在构造方法里载入;

3、给view增加自定义属性;

4、获取自定义属性的值;

5、让这些值生效。


希望本文能够帮到大家!

你可能感兴趣的:(自定义 View之一:实用入门)