Android自定义组件:1、什么是自定义组件、自定义组件的方式、定义自定义属性

声明:本教程不收取任何费用,欢迎转载,尊重作者劳动成果,不得用于商业用途,侵权必究!!!

目录

一、前言

二、什么是自定义组件

三、自定义组件的方式

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 文件 具体写法如下:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <declare-styleable name="MyView">
        <attr name="textColor" format="color"/>
        <attr name="textSize" format="dimension"/>
        <attr name="text" format="string"/>
    </declare-styleable>
</resources>

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 枚举。只能在提供的值里面选一个,如下:

     <attr name="language">

        <enum name="China" value="1">

        <enum name="English" value="2">

     </attr>

10、flag 位或运算

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

被开发耽误的大厨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值