TransitionDrawable是能在两个drawable资源之间淡入淡出切换的drawable对象。
每个drawable在<transition>元素中都用<item>元素表示。不支持两个以上的项。向前过渡使用startTransition()。向后过渡使用reverseTransition()。
文件位置
res/drawable/filename.xml
这个文件名用作资源标识
编译后的资源类型
使用方式
在Java中:R.drawable.filename
在XML中:@[package:]drawable/filename
语法
<?xml version="1.0" encoding="utf-8"?>
<transitionxmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:drawable="@[package:]drawable/drawable_resource"
android:id="@[+][package:]id/resource_name"
android:top="dimension"
android:right="dimension"
android:bottom="dimension"
android:left="dimension" />
</transition>
元素
<transition>
必须。必须作为根元素。它包含一个或更多<item>元素。
属性:
xmlns:android
字符串。必须。定义这个XML的命名空间,必须是"http://schemas.android.com/apk/res/android"。
<item>
定义作为TransitionDrawable的一部分的drawable。必须是<transition>的子元素。可以用<bitmap>作为子元素。
属性:
android:drawable
Drawable资源。必须。引用drawable资源。
android:id
资源ID。这个drawable的唯一资源ID。为了给item创建新的资源ID,要使用:“@+id/name”格式。这里的加号表示应当创建新的ID。你能使用这个标识来通过View.findViewById()或Activity.findViewById()检索或修改这个drawable。
android:top
Integer。以像素为单位的顶部偏移量。
android:right
Integer。以像素为单位的右边偏移量。
android:bottom
Integer。以像素为单位的底部偏移量。
android:left
Integer。以像素为单位的左边偏移量。
例子
在res/drawable/transition.xml中的内容如下:
<?xml version="1.0" encoding="utf-8"?>
<transition xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/on" />
<item android:drawable="@drawable/off" />
</transition>
在XML布局中将这个drawable应用到视图上:
<ImageButton
android:id="@+id/button"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:src="@drawable/transition" />
下方的代码在从第一项到第二项时执行500ms的过渡:
ImageButton button = (ImageButton) findViewById(R.id.button);
TransitionDrawable drawable = (TransitionDrawable) button.getDrawable();
drawable.startTransition(500);