Android Drawable集合

2019-08-28  本文已影响0人  小的橘子

一、简介

二、Drawable分类

1. BitmapDrawable

表示的是一张图片,也就是位图(.png,.jpg或这.gif)。xml标签为<bitmap>
xml定义

<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
    android:gravity="right"
    android:src="@drawable/studio"></bitmap>

这块需要注意的是gravity生效条件:

BitmapDrawable

属性介绍

如何全部采用默认属性,完全可以通过R.drawable形式直接引用原图即可

2. NinePatchDrawable

表示的是一张.9格式图片,.9图片会自动根据所需宽高进行缩放并保证不失真。xml标签为<nine-patch>
xml定义和BitmapDrawable完全相同,只不过引用资源为.9图片即可。

3. StateListDrawable

StateListDrawable表示Drawable集合,每个Drawable都对应View一种状态,这样系统会根据View的状态来选择合适的Drawable。xml标签为<selector>
xml定义

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!--View处于按下状态-->
    <item android:drawable="@android:color/holo_orange_dark" android:state_pressed="true"></item>
    <!--上述两种之外的状态,均会采用该种状态-->
    <item android:drawable="@android:color/white"></item>
</selector>
StateListDrawable

当然还有其他一些状态可以使用,例如:

item查找顺序
由于有多个item,系统只会选择一条item进行设置,规则是按照从上到下的顺序查找,直到查找到第一条匹配的item。一般默认的item都应该放在selector的最后一条并且不附带任何的状态,这样上面的item均不匹配时,系统会选择默认的item。

4. LevelListDrawable

LevelListDrawable和StateListDrawable非常类似,不同的是StateListDrawable是根据状态切换图片,而LevelListDrawable是根据设置的level切换图片。其xml标签为<level-list>
xml定义

<?xml version="1.0" encoding="utf-8"?>
<level-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:drawable="@android:color/holo_orange_dark"
        android:maxLevel="100"
        android:minLevel="1"></item>
    <item
        android:drawable="@android:color/holo_red_dark"
        android:maxLevel="200"
        android:minLevel="101"></item>
    <--匹配level为0的View,如果item中指定了level为0的drawable,那么该item不匹配任何level-->
    <item android:drawable="@android:color/holo_blue_bright"></item>
</level-list>

当设置level后,则会选择对应的item的图片。设置的代码以给Button背景设置为例

Drawable drawable = mButton.getBackground();
drawable.setLevel(150);

5. ShapDrawable

参考

Android官方参考

上一篇 下一篇

猜你喜欢

热点阅读