Android TransitionDrawable

TransitionDrawableLayerDrawable 的一个子类,TransitionDrawable 只管理两层的 Drawable 并且提供了透明度变化的动画,可以控制一层 Drawable 过度到另一层 Drawable 的动画效果

属性

属性 说明
android:drawable 引用的位图资源,如果为空徐璈有一个 Drawable 类型的子节点
android:left 层相对于容器的左边距
android:right 层相对于容器的右边距
android:top 层相对于容器的上边距
android:bottom 层相对于容器的下边距
android:id 层的 id

根节点为 <transition> ,记住只有两个 <item> ,多了也没用

设置好了之后需要调用 startTransition() 方法才能启动两层间的切换动画

也可以调用 reverseTransition() 方法反过来播放

范例


  1. 创建一个 空的 Android 项目 cn.twle.android.TransitionDrawable

  2. 下载 /static/i/meimei.jpg/static/i/meimei_alpha.jpg 并放到 res/drawable 目录

  3. 使用 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>
    
  4. 修改 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>
    
  5. 最后修改 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

Android 基础教程

关于   |   FAQ   |   我们的愿景   |   广告投放   |  博客

  简单教程,简单编程 - IT 入门首选站

Copyright © 2013-2022 简单教程 twle.cn All Rights Reserved.