Android TransitionDrawable实现一种可以用动画表示的Drawable。写一个例子。

package zhangphil.app; 
 
import android.graphics.Color; 
import android.graphics.drawable.ColorDrawable; 
import android.graphics.drawable.Drawable; 
import android.graphics.drawable.TransitionDrawable; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.widget.ImageView; 
 
public class MainActivity extends AppCompatActivity { 
 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.activity_main); 
 
        //定义一个过渡drawable数组,最后一个drawable:drawables[n-1]是最终的显示形式 
        //第一个是开始 
        Drawable[] drawables=new Drawable[]{new ColorDrawable(Color.TRANSPARENT),new ColorDrawable(Color.RED)}; 
        TransitionDrawable td=new TransitionDrawable(drawables); 
 
        ImageView image = (ImageView) findViewById(R.id.imageView); 
        image.setImageDrawable(td); 
 
        //交叉淡入样式 
        td.setCrossFadeEnabled(true); 
 
        //开始执行动画,从设定的时间内,缓慢的从TransitionDrawable构造时候的数组第一个drawable(drawables[0])渐变成最后数组最后一个drawable(drawables[n-1]) 
        //动画执行结束后,最终显示的是最后一个drawables[n-1] 
        td.startTransition(500); 
    } 
} 


如果要用xml实现TransitionDrawable,需要在drawable目录下新建一个xml代码文件,比如transition.xml,代码:

<?xml version="1.0" encoding="utf-8"?> 
<transition xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@android:color/transparent" /> 
    <item android:drawable="@android:color/holo_red_dark"/> 
</transition>

上层Java代码变成:

TransitionDrawable transition = (TransitionDrawable)getResources().getDrawable(R.drawable.transition); 
        ImageView image = (ImageView) findViewById(R.id.imageView); 
        image.setImageDrawable(transition); 
        
        transition.setCrossFadeEnabled(true); 
        transition.startTransition(500);


发布评论

分享到:

IT虾米网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!

Android渐变GradientDrawable叠加组合环ring详解
你是第一个吃螃蟹的人
发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。