我正在尝试制作动画 Logo 。它由两个静态图像组成。
我想实现交叉淡入淡出的效果。
我已经使用 TransitionDrawable 完成了它,设置了 crossFadeEnabled,一切看起来都不错。
问题是我需要绕圈子跑。如何实现?
<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);
这是来自谷歌的完美运行的代码。 最重要的是需要在Android 1.6下运行。
最佳答案
在从 drawable1 到 drawable2 的转换之后,我设法通过一个处理程序方法使转换 drawable 工作,该方法反转方向。在我的 XML 中:
<?xml version="1.0" encoding="utf-8"?>
<transition xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:drawable="@drawable/background_animation1"/>
<item android:drawable="@drawable/background_animation2"/>
</transition>
可绘制对象是渐变的:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
<corners android:topLeftRadius = "10dp" android:topRightRadius="10dp" android:bottomLeftRadius="10dp" android:bottomRightRadius="10dp"/>
<gradient
android:startColor="#d200ff"
android:centerColor="#4e00ff"
android:endColor="#006cff"/>
</shape>
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
<size android:width="900dp" android:height="500dp"/>
<corners android:topLeftRadius = "10dp" android:topRightRadius="10dp" android:bottomLeftRadius="10dp" android:bottomRightRadius="10dp"/>
<gradient
android:startColor="#006cff"
android:centerColor="#ff6600"
android:endColor="#d200ff"/>
</shape>
在我的初始化代码中:
trans = (TransitionDrawable) getResources().getDrawable(R.drawable.transition);
trans.setCrossFadeEnabled(true);
backgroundimage.setImageDrawable(trans);
....
handlechange();
处理程序代码中最重要的部分;请注意全局运行的标志。我在 Gingerbread 和 Kitkat 上运行了它;
void handlechange1()
{
Handler hand = new Handler();
hand.postDelayed(new Runnable()
{
@Override
public void run()
{
change();
}
private void change()
{
if (flag)
{
trans.startTransition(8000);
flag = false;
} else
{
trans.reverseTransition(8000);
flag = true;
}
handlechange1();
}
}, 8000);
}
关于android - Android中如何制作连续运行的TransitionDrawable动画?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5939879/