Android自定义View 完整版

第二篇博客,今天来记录一个Android开发中重要的知识点:自定义View


OK,在节目开始之前,首先来一个搞笑段子:

刚才看到一个身影很像你,我疯了似的追上去,在靠近的那一刻才想起这个城市没有你。我停下脚步,放下手中的砖头,差点就打错人了。


好的,进入正题,Android为开发者提供了一套完善的UI设计模板,系统控件都是基于这套模板编写的,我们要自定义View,也要遵循模板。

自定义View是一个非常复杂庞大的领域,设计到的东西实在太多,一篇博客不可能说的完,今天就讲最基础的一点:自定义View中的自定义属性。


Android系统提供的自定义View模板可以让我们轻松的新增自定义属性,分为3步:编写attr.xml,在布局文件中使用,在自定义View中获取自定义属性的值。


第一步:编写attr.xml

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

这个代码一目了然,申明一个自定义View属性,取名为MyView,下有两个属性,每个属性都一个一个format,只是这个format的类型要记录下。

format类型总共有10种,下面列出10种类型和对应的赋值。

1、color 颜色值

<declare-styleable name="MyView">       
    <attr name="textColor" format="color" />      
</declare-styleable>

 
<xxx:textColor="#f0f0f0"/>

2、dimension 距离

<declare-styleable name="MyView">       
    <attr name="size" format="dimension" />      
</declare-styleable>
<xxx:size="30dp"/>


3、reference 引用

<declare-styleable name="MyView">       
    <attr name="size" format="reference" />      
</declare-styleable>
<xxx:size="@dimen/size"/>
 

4、boolean 用于开关

<declare-styleable name="MyView">       
    <attr name="isDark" format="boolean" />      
</declare-styleable>
<xxx:isDark="true"/>

5、float 浮点数

<declare-styleable name="MyView">       
    <attr name="size" format="float" />      
</declare-styleable>
<xxx:size="0.7"/>

6、integer 整数

<declare-styleable name="MyView">       
    <attr name="size" format="integer" />      
</declare-styleable>
<xxx:size="30"/>

7、string 字符创

<declare-styleable name="MyView">       
    <attr name="title" format="string" />      
</declare-styleable>
<xxx:title="HelloWorld"/>

8、fraction 分数,通常用于表示百分比

<declare-styleable name="MyView">       
    <attr name="size" format="fraction" />      
</declare-styleable>
<xxx:size="60%"/>

9、|选择 在给定选项中选择

<declare-styleable name="MyView">       
    <attr name="size" format="dimension|reference" />      
</declare-styleable>
<xxx:size="20dp|@dimen/size"/></span>

 
 

10、enum 枚举

<declare-styleable name="MyView">       
    <attr name="orientation">
        <enum name="horizontal" value="0" />
        <enum name="vertical" value="1" />
    </attr>      
</declare-styleable>
<xxx:orientation="vertical">

这个其实很常见,比如ImageView的scaleType,系统给定了几个选项,你只能在其中选择一个


第二步:在布局文件中使用

<LinearLayout   
    xmlns:android="http://schemas.android.com/apk/res/android"  
    xmlns:xxx="http://schemas.android.com/apk/res/包名"
    android:layout_width="match_parent"  
    android:layout_height="match_parent"  
    android:orientation="vertical" >  
    <包名.MyView
        android:layout_width="match_parent"   
        android:layout_height="match_parent"   
        xxx:textSize="20dp" 
        xxx:color="#f0f0f0"/>  
</LinearLayout>
一定记得加上命名控件xmlns,否则是不能使用自定义属性的。


第三步:在自定义view中获取自定义属性

TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.MyView);  
int color = a.getColor(R.styleable.MyView_color, Color.WHITE);  
float textSize = a.getDimension(R.styleable.MyView_textSize, 50);
a.recycle();//一定记得回收

好了,至此关于自定义View的自定义属性的模板就说完了,正如前面所说,Android自定义View是一个非常庞大的领域,今天这篇博客只是选一个很小的点做下记录。后面会再写很多博客记录自定义View的其它方面知识。


感谢大家的收看,本期节目就到这里,下期再见~





评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值