关闭

自定义控件 浅述

标签: 图片自定义控件
84人阅读 评论(0) 收藏 举报
分类:

自定义控件


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下载点击这里

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:892次
    • 积分:41
    • 等级:
    • 排名:千里之外
    • 原创:3篇
    • 转载:1篇
    • 译文:0篇
    • 评论:1条
    文章分类
    文章存档
    最新评论