1.普通图像资源
Android支持图像格式 png jpg
布局文件中可以使用如下格式:
<ImageView
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:src="@android:drawable/alert_light_frame"/>
使用图像资源的Java代码:
Resources res = getResources();
Drawable drawable = res.getDrawable(R.drawable.icon);
2.XML图像资源
XML图像资源就是在XML文件中指定drawable目录中的图像资源,通过<bitmap> 标签定义
<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@android:drawable/ic_dialog_alert"
android:tileMode="repeat">
</bitmap>
3.Nine-Patch图像资源
Nine-Patch图像资源与普通图像资源类似, 只是Nine-Patch图像资源文件必须以 9.png作为文件扩展名, 也可以在XML图像中建立Nine-Patch图像资源
eg: abc.9.png face.9.png
<?xml version="1.0" encoding="utf-8"?>
<nine-patch xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@drawable/ic_launcher"
android:dither="false"
android:autoMirrored="false">
</nine-patch>
4.图层(Layer)资源
图层资源有些类似于<FrameLayout>, 但是图层资源中的每一层只能包含图像。定义图层(Layer)资源必须使用<layer-list>作为根节点,<layer-list>标签中可以包含多个<item>标签,每一个<item>表示一个图像,最后一个<item>标签会显示在最顶层。
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item>
<bitmap android:src="@drawable/ic_launcher" android:gravity="center"/>
</item>
<item android:top="10dp" android:left="10dp">
<bitmap android:src="@drawable/ic_launcher" android:gravity="center"/>
</item>
<item android:right="10dp" android:bottom="10dp">
<bitmap android:src="@drawable/ic_launcher" android:gravity="center"/>
</item>
</layer-list>
5.图像状态(State)资源
图像状态(State)资源大多都用在Button时。当点击按钮的时候,会有点击炫酷效果。 图像状态(State)资源必须以<selector>标签作为根节点。标签中包含了若干个<item>标签
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:state_pressed="true" android:drawable="@drawable/ic_launcher"></item>
<item android:state_focused="true" android:drawable="@drawable/ic_launcher"></item>
<item android:drawable="@drawable/ic_launcher"></item>
</selector>
6.图像级别(Level)资源
在图像资源文件中可以定义多个图像级别,每个图像级别是一个整数区间,可以通过 ImageView.setImageLevel 或 Drawable.setLevel方法切换不同状态的图像
XML中将<level-list>标签作为根节点
<?xml version="1.0" encoding="utf-8"?>
<level-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:drawable="@drawable/lamp_off"
android:minLevel="6" android:maxLevel="10"></item>
<item android:drawable="@drawable/lamp_on"
android:minLevel="12" android:maxLevel="20"></item>
</level-list>
7.淡入淡出(Cross-fade)资源
淡入淡出资源,做出更酷更炫的效果 跟标签<transition>
<?xml version="1.0" encoding="utf-8"?>
<transition xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:drawable="@drawable/lamp_off"> </item>
<item android:drawable="@drawable/lamp_on" ></item>
</transition>
从第一个图像切换到第二个图像要使用TransitionDrawable.startTransition()
从第一个图像切换到第二个图像要使用TransitionDrawable.reverseTransition()
8.嵌入(Inset)图像资源
显示的图像 要求 小于 装载图像的视图,可以考虑使用嵌入图像资源。跟标签<inset>标签
<?xml version="1.0" encoding="utf-8"?>
<inset xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@drawable/ic_launcher"
android:insetLeft="10dp"
android:insetTop="10dp"
android:insetRight="10dp"
android:insetBottom="10dp">
</inset>
9.剪切(Clip) 图像资源
使用剪切(Clip) 图像资源可以只显示一部分图像, 这种资源经常用于进度条的制作(准备两个png图像,background.png progress.png)
剪切(Clip) 图像资源的跟标签<clip>
<?xml version="1.0" encoding="utf-8"?>
<clip xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@drawable/ic_launcher"
android:clipOrientation="horizontal"//截取的方向
android:gravity="left">
</clip>
10.比例(Scale)图像资源
比例(Scale)图像资源可以将图像放大或缩小 跟标签<scale>
下面的代码实现按原图的80%显示
<?xml version="1.0" encoding="utf-8"?>
<scale xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@drawable/ic_launcher"
android:scaleWidth="80%"//宽度方向缩放的比例
android:scaleHeight="80%"//高度方向缩放的比例
android:scaleGravity="center_vertical|center_horizontal"//图像显示的位置
android:useIntrinsicSizeAsMinimum="true">
</scale>
11.外形(Shape)资源
通过外形(Shape)资源,可以为控件加上渐变背景色,可以使控件的4个角变成圆形,以及设置控件内容到控件边界的距离等。
跟标签<shape> <shape>标签的 anroid:shape属性可以指定要绘制的形状 rectangle(矩形) oval(椭圆) line(直线) ring(圆环)
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<!-- 定义渐变色(从左下角到右上角绘制渐变色) -->
<gradient android:startColor="#FFFF0000" android:endColor="#80FF00FF" android:angle="45"/>
<!-- 定义控件内容到边界的距离 -->
<padding android:left="7dp" android:top="7dp" android:right="7dp" android:bottom="7dp"/>
<!-- 定义边框线(边框线宽度是2, 颜色为白色) -->
<stroke android:width="2dp" android:color="#FFF"/>
<!-- 定义圆角(圆角半径是8) -->
<corners android:radius="8dp"/>
</shape>