声明:本教程不收取任何费用,欢迎转载,尊重作者劳动成果,不得用于商业用途,侵权必究!!!
目录
一、前言
二、什么是自定义组件
三、自定义组件的方式
1、组合现有组件
2、在某一个组件上进行扩展
3、完全自定义组件
四、定义自定义属性
1、attrs.xml 文件介绍
2、attrs.xml 文件具体写法
3、attrs.xml 文件解释
一、前言最近项目中用到很多自定义组件的知识,所以想把几年前自学自定义组件的笔记整理一下和大家一起分享,也方便自己巩固。之后也会陆续把以前在公司项目当中比较经典的自定义组件案例,抽离出来和大家一起分享
二、什么是自定义组件Android为我们提供了丰富的 UI组件,基本的应用已经足够了,但在实际开发中,如果我们想构建更加复杂的 UI视图,此时就需要使用自定义组件了。
三、自定义组件的方式自定义组件的三种方式:
1、组合现有组件组合现有Android默认提供的组件,继承ViewGroup或其子Layout类等布局类进行组合。
如:如果是我们自己写Layout布局,每次可能要一个个写或拖动进去。
那我们把这整个Layout布局定义成一个组件,下次就直接使用即可,相当于打包。
2、在某一个组件上进行扩展调整现有Android默认提供的组件,继承View的子类具体类。
如:继承ImageView实现在图片上添加文字,继承Toast实现在文字下面添加图片等
3、完全自定义组件继承View基类,里面界面及事件完全由自己控制。
如:我们知道所有组件都是继承View而来,那么你也就可以直接自己写一个类继承View,重写View里面的相关方法或事件,然后自己去控制操作。 这个是最原始的,完全自定义的,不是基于任何Android默认提供的组件去定义的。
四、定义自定义属性 1、attrs.xml 文件介绍不管使用哪种自定义组件的方式,首先当然是你要写出自定义组件的一个类文件,
在这个类当中,如果你需要有自定义的属性。
所谓自定义属性是什么?
如:像android提供的默认组件,一般都有定义宽、高、字体大小或颜色的属性,
如果除了这些属性以外,还想在你的自定义组件里面,拥有提供自己的属性,这个就是自定义属性。
如何创建自定义属性文件?
这个时候我们就要使用到一个属性资源配置文件,它是一个xml文件,
然后将这个类里,需要外界传入值的属性,定义在这个属性资源配置文件中,
在工程里的 .../res/values/ 目录下创建一个 attrs.xml,
文件名 attrs由英文单词 attribute而来,见名知意的写法,
文件名并不是只能写成这样,这样写只有一个目的,别人一看就知道这个文件是属性资源文件了。
2、attrs.xml 文件具体写法配置XML属性资源文件的方式,attrs.xml 文件 具体写法如下:
3、attrs.xml 文件解释
attrs.xml文件解释如下:
attrs.xml文件解释如下
resources 资源
declare-styleable 声明风格样式 name 风格样式的名称
attrs 子元素
name 属性名
format 属性格式
定义具体的属性,format 表示这个属性的值的类型,类型有以下几种:
1、reference
参考指定Theme中资源ID,这个类型的意思,就是你传的值可以是引用资源
2、string 字符串,
如果你想别人既能直接写字符串值,也可以用类似写"@string/test"引用资源的方式,可以写成 format="string|reference"
3、color 颜色
4、boolean 布尔值
5、dimension 尺寸值
6、float 浮点型
7、integer 整型
8、fraction 百分数
9、enum 枚举。只能在提供的值里面选一个,如下:
10、flag 位或运算
作者:luminal_Andy