Android自定义控件的简单实现

1、首先创建一个类,继承view或者ViewGroup或者其子类(LinearLayout等),这个类就是将要实现的自定义控件了

2、在values文件夹下新建xml文件,取名为attrs

3、在attrs.xml中编写自定义属性集declare-styleable,在自定义属性集中创建自定义属性attr,例:

其中<declare-styleable name="myAttrs">的myAttrs是属性集的名称,用来区分多个属性集,在第一步创建的类中会用到

<attr/>里面就是一些自定义的属性值,将会在activity的xml布局文件中用到

4、在第一步创建的类的构造函数中加载xml获取属性集中的各个属性(关键字:typedArray):


TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.myAttrs),这条语句我的理解是,用R.styleable.myAttrs属性集中的属性解析attrs(attrs指在xml文件中引用了自定义组件,并用命名空间初始化了的属性值)

(上面是个人理解,可能有误)

获取到typedArray后,就可以用遍历的方式,拿到在xml文件中初始化的值的资源位置,然后用typedArray.getXXX(index)方法,获取到值。

5、记得回收资源

6、接下来,就是重写onDraw方法将获得的值(String、int、drawable等)绘制出来:


7、接下来就可以在activity的xml布局文件中引用自定义组件了,必须用全路径),然后在命名空间中取出属性并进行赋值,注意,图片资源引用xml矢量图片会报错:


猜你喜欢

转载自blog.csdn.net/UniUIX/article/details/80215190