Drawable Resources一览

文章的GitHub地址:Drawable Resources一览

译者注:之前某个国外开发者大会释放出来的,整理一下记录下来,看看你都会么?

Bitmap File

bitmap

Nine-Path File

.9 图片

Layer List

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android....
    <item
        android:width="40dp"
        android:height="40dp"
        android:drawable="@drawable/ic_activation_01"
        android:gravity="center" />
    <item
        android:width="30dp"
        android:height="30dp"
        android:drawable="@drawable/ic_activation_02"
        android:gravity="center" />
    <item
        android:width="20dp"
        android:height="20dp"
        android:drawable="@drawable/ic_activation_03"
        android:gravity="center" />
</layer-list>
layer list

State List

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android....
    <item
        android:drawable="@drawable/btn_ok_pressed"
        android:state_enabled="true"
        android:state_pressed="true" />
    <item
        android:drawable="@drawable/btn_ok_disable"
        android:state_enabled="false" />
    <item
        android:drawable="@drawable/btn_ok_normal" />
</selector>
state list

Level List

要实现一个多状态显示的效果,像下面这样写?

ImageView ivScore = (ImageView)findViewById(R.id.iv_asd);
int score = ...;
if(score == 0) {
    ivScore.setImageResource(R.drawable.ic_score_bad);
} else if(score == 1) {
    ivScore.setImageResource(R.drawable.ic_score_ok);
} else if(score == 2) {
    ivScore.setImageResource(R.drawable.ic_score_good);
}
level list

No 下面才是优雅的方式

<?xml version="1.0" encoding="utf-8"?>
<level-list xmlns:android="http://schemas.android...
    <item
        android:drawable="@drawable/ic_score_bad"
        android:maxLevel="0" />
    <item
        android:drawable="@drawable/ic_score_ok"
        android:maxLevel="1" />
    <item
        android:drawable="@drawable/ic_score_good"
        android:maxLevel="2" />
</level-list>


ImageView ivScore = (ImageView)findViewById(R.id.iv_score);
int score = ...;
ivScore.setImageLevel(score);

Transition Drawable

用来设置2个图片的渐变效果

<?xml version="1.0" encoding="utf-8"?>
<transition xmlns:android="http://schemas.android.com/...
    <item
        android:drawable="@drawable/ic_score_very_bad" />
    <item
        android:drawable="@drawable/ic_score_very_good" />
</transition>

ImageView ivScore = (ImageView) findViewById(R.id.iv_score);
TransitionDrawable drawable =(TransitionDrawable) ivScore.getDrawable();
drawable.startTransition(1000);
transition
drawable.reverseTransition(1000);
transition2

Inset Drawable

<?xml version="1.0" encoding="utf-8"?>
<inset xmlns:android="http://schemas.android.com/...
    android:drawable="@drawable/bg_badge"
    android:insetBottom="10dp"
    android:insetLeft="10dp"
    android:insetRight="10dp"
    android:insetTop="10dp"/>
inset

Clip Drawable

图片裁剪,可以实现很多很好玩的效果,裁剪范围0-10000,5000也就是裁剪一半

<?xml version="1.0" encoding="utf-8"?>
<clip xmlns:android="http://schemas.android.com/...
    android:clipOrientation="horizontal"
    android:drawable="@drawable/ic_rate_very_good"
    android:gravity="left" />

ImageView ivRate = (ImageView) findViewById(R.id.iv_rate);
ClipDrawable drawable = (ClipDrawable) ivRate.getDrawable();
...
drawable.setLevel(5000);
clip

Scale Drawable

<?xml version="1.0" encoding="utf-8"?>
<scale xmlns:android="http://schemas.android.com/...
    android:drawable="@drawable/ic_code_mania"
    android:scaleGravity="center"
    android:scaleHeight="60%"
    android:scaleWidth="60%" />
scale

Shape Drawable

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/...
    <stroke
        android:width="4dp"
        android:color="#ffffff"
        android:dashGap="10dp"
        android:dashWidth="10dp" />
    <solid
        android:color="#237793" />
    <corners
        android:radius="10dp" />
</shape>
shape

Drawable Mixing

结合使用

<?xml version="1.0" encoding="utf-8"?>
<clip xmlns:android="http://schemas.android.com/apk/res/android"
    android:clipOrientation="horizontal"
    android:gravity="left">
    <shape>
        <solid
            android:color="#ffd200" />
        <corners
            android:radius="50dp" />
    </shape>
</clip>
mix
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 转载自Keegan小钢并标明原文链接:http://keeganlee.me/post/android/20150...
    坚持编程_lyz阅读 1,195评论 0 1
  • 概述 今天我们来探究一下android的样式。其实,几乎所有的控件都可以使用 background属性去引用自定义...
    CokeNello阅读 4,935评论 1 19
  • //通过获得资源文件进行设置。根据不同的情况R.color.red也可以是R.string.red或者R.draw...
    gogoingmonkey阅读 1,996评论 0 2
  • 暑假在家呆多久,就颓废有多久。我不喜欢这种感觉,被这种感觉这么久,感觉自己已死去。 昨天去了母校,曾经的许多事...
    U_2d2f阅读 173评论 1 0
  • 今天出门很冷,还下着小雨,在去上班的公车上,听到这样一则故事,让我整个人都暖起来,上网找了下这则故事,内容如下: ...
    Rebecca小零阅读 493评论 6 8