自定义控件 浅述

自定义控件


1. 在res->values->attrs.xml中声明你要自定义的属性(如果没有 attrs.xml可以新建一个)
例如这个
attrs 的内容
其中 <declare-styleable name = "........."> 代指你要自定义属性的组的标题
比如我定义了一个自定义图片的组叫“MyImageView”后面就会引用的这个东西 后面再说
当然你也可以不用写这个东西 但是推荐还是写上毕竟项目不是一个人的项目
<attr name="key" format="内容的格式"> 指的的是你这个组下面的包含的属性
#在这给大家整理了format的值
“reference” //引用
“color” //颜色
“boolean” //布尔值
“dimension” //尺寸值
“float” //浮点值
“integer” //整型值
“string” //字符串
“fraction” //百分数,比如200%
枚举型的格式:
< attr name=”orientation”>
< enum name=”horizontal” value=”0” />
< enum name=”vertical” value=”1” />
< /attr>


2. 自定义控件类
比如我我将iamgeview进行了拓展 我就继承了imageView类
iamgeview类


然后实现父类的抽象类
一共有4个方法一般推荐 有两个就够了
两个方法
但是我只用了一个 哈哈
因为只传context 我不知道这么取属性
那么问题来了就算有attrs怎么取属性值
见图
取值
先通过
TypedArraytypedArray=context.obtainStyledAttributes(attrs,R.styleable.MyImageView);
拿到自定义控件的你定义的属性的组就是之前在attrs中写的
<declare-styleable name = ".........">
name属性拿到组之后就可以通过对象把值get出来了比如我要拿到图片的URL
imageUrl = typedArray.getString(R.styleable.MyImageView_ImageUrl);


就可以这么拿了 当然这个只是在xml中设置了这个属相才可以这样拿 要怎么拿这个值之后第3步给大家说
然后也可以在代码中设置这里的属性值
用代码拿值
用setImageUrlAndIsAche();方法键入值
这里面用了handler进行了页面刷新(因为这里用了网络获取图片很耗时所以有默认显示的图片)
handler
在这两步我觉得有两个方法大家要注意一下
一个是 invalidate(); 方法 指的是再次绘制这个view
特别声明这个方法是在handler中用的
另一个是recycle();方法
这个方法是在你拿到所有的属性值之后关闭属性对象 让其他人可以用这个属性对象


3. 在xml中引用自定义属性
xml


这里有两个小点一个是

xmlns:myiamgeview="http://schemas.android.com/apk/res/com.example.imagedemo"


代表的意思是
myiamgeview 是指的是下面你要调用”http://schemas.android.com/apk/res/com.example.imagedemo“这个工作空间的内容而起的名字可以自定义但不要用特殊字符Android可能不认
另一个是http://schemas.android.com/apk/res/com.example.imagedemo 这句话
你可以发现这句话跟
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
很相似实际上就是把Android换成了你的项目报名而已 换过来就代指了你自定义的属性了

demo下载点击这里

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值