Android TransitionDrawable
TransitionDrawable
是 LayerDrawable
的一个子类,TransitionDrawable
只管理两层的 Drawable
并且提供了透明度变化的动画,可以控制一层 Drawable 过度到另一层 Drawable 的动画效果
属性
属性 | 说明 |
---|---|
android:drawable | 引用的位图资源,如果为空徐璈有一个 Drawable 类型的子节点 |
android:left | 层相对于容器的左边距 |
android:right | 层相对于容器的右边距 |
android:top | 层相对于容器的上边距 |
android:bottom | 层相对于容器的下边距 |
android:id | 层的 id |
根节点为 <transition>
,记住只有两个 <item>
,多了也没用
设置好了之后需要调用 startTransition()
方法才能启动两层间的切换动画
也可以调用 reverseTransition()
方法反过来播放
范例
-
创建一个 空的 Android 项目
cn.twle.android.TransitionDrawable
-
下载 /static/i/meimei.jpg 和 /static/i/meimei_alpha.jpg 并放到
res/drawable
目录 -
使用
TransitionDrawable
创建一个过渡动画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/meimei"/> <item android:drawable="@drawable/meimei_alpha"/> </transition>
-
修改
activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:id="@+id/img_show" android:layout_width="match_parent" android:layout_height="match_parent" android:scaleType="center" android:src="@drawable/transition.xml" /> </LinearLayout>
-
最后修改
MainActivity
package cn.twle.android.transitiondrawable; import android.graphics.drawable.TransitionDrawable; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.widget.ImageView; public class MainActivity extends AppCompatActivity { private ImageView img_show; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); img_show = (ImageView) findViewById(R.id.img_show); TransitionDrawable td = (TransitionDrawable) img_show.getDrawable(); td.startTransition(3000); //可以使用 reverseTransition() 反过来播放 //td.reverseTransition(3000); } }
如果想实现 多张图片循环的淡入淡出的效果 可以使用 handler 定时修改 Transition 中两个图片,可以参考 Android Drawable Resource学习(七)、TransitionDrawable