如何在Android中制作连续运行的TransitionDrawable动画?
我正在尝试制作一个动画徽标。它由两个静态图像组成 我想实现交叉衰落效果 我使用TransitionDrawable,设置crossFadeEnabled,一切看起来都很好 问题是我需要绕圈子跑。如何实现这一目标如何在Android中制作连续运行的TransitionDrawable动画?,android,animation,imageview,drawable,transition,Android,Animation,Imageview,Drawable,Transition,我正在尝试制作一个动画徽标。它由两个静态图像组成 我想实现交叉衰落效果 我使用TransitionDrawable,设置crossFadeEnabled,一切看起来都很好 问题是我需要绕圈子跑。如何实现这一目标 <transition xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/image_expand"> <ite
<transition xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/image_expand">
<item android:drawable="@drawable/image_collapse">
</transition>
Resources res = mContext.getResources();
TransitionDrawable transition = (TransitionDrawable) res.getDrawable(R.drawable.expand_collapse);
ImageView image = (ImageView) findViewById(R.id.toggle_image);
image.setImageDrawable(transition);
Resources res=mContext.getResources();
TransitionDrawable transition=(TransitionDrawable)res.getDrawable(R.drawable.expand\u collapse);
ImageView图像=(ImageView)findViewById(R.id.toggle_图像);
image.setImageDrawable(转换);
这是来自谷歌的代码,运行非常好。
最重要的是,in需要在Android 1.6下工作。实际上没有一种内置的方法来实现这一点
TransitionDrawable
未设计无限循环动画功能。最简单的建议是在视图
上使用动画
(alpha、scale、translate等),如果可以,只包含一个可绘制的
一个相当简单的方法是添加一个处理程序
并回调到您的自定义视图
中,以保存您的可转换绘图文件
。创建视图
时,可以将处理程序
设置为您的转换间隔。视图
还将实现处理程序.回调
,在其handleMessage(Message)
方法中,它将调用TransitionDrawable上的反向转换(int)
下面是一个粗略的例子:
public class myView extends View implements Handler.Callback {
private Handler mHandler = new Handler(this);
private int mDelay = 1000; // Delay in milliseconds.
private Runnable mEvent = new Runnable() {
public void run() {
mHandler.removeCallbacks(mEvent);
mHandler.postDelayed(mEvent, mDelay);
Message message = mHandler.obtainMessage();
mHandler.sendMessage(message);
}
};
public View(Context context) {
super(context);
// Set your background TransitionDrawable.
setBackgroundDrawable(...);
}
public handleMessage(Message message) {
TransitionDrawable drawable = (TransitionDrawable) getBackgroundDrawable();
drawable.reverseTransition(mDelay);
}
public void start() {
mHandler.post(mEvent);
}
public void stop() {
mHandler.removeCallbacks(mEvent);
}
}
调用start()
开始连续转换,调用stop()
停止转换。这有点像创建自己的动画,但它在紧要关头起作用。我通过一个处理程序方法,在从drawable1转换到drawable2后,将方向反转,从而使转换drawable工作起来。在我的XML中: