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矢量图片会报错:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值