Ole*_*lek 5 animation android transition drawable imageview
我正在尝试制作一个动画徽标.它由两个静态图像组成.
我想要实现交叉淡化效果.
我已经使用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);
Run Code Online (Sandbox Code Playgroud)
谷歌的代码运行完美.最重要的是需要在Android 1.6下工作.
并没有真正的内置方法可以做到这一点。 TransitionDrawable没有设计无限循环动画功能。最简单的建议是如果可以的话,在仅包含您的 s 之一的a 上使用Animation(alpha、scale、translate 等) 。ViewDrawable
一个相当简单的技巧是将Handler和 回调添加到您的自定义View保存中TransitionDrawable。创建后View,Handler可以将其设置为您的转换间隔。也View将实现Handler.Callback并在其handleMessage(Message)方法内部,它会调用reverseTransition(int)您的TransitionDrawable.
一个粗略的例子如下:
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);
}
}
Run Code Online (Sandbox Code Playgroud)
打电话start()来开始你的连续过渡,stop()停止它。这有点像创建自己的动画,但它可以在紧要关头发挥作用。
| 归档时间: |
|
| 查看次数: |
5642 次 |
| 最近记录: |