Android中用于图像转换的动画
我有二十个图像,一个接一个地变换。转换在以下循环中与计时器一起实现Android中用于图像转换的动画,android,Android,我有二十个图像,一个接一个地变换。转换在以下循环中与计时器一起实现 final Runnable mUpdateResults = new Runnable() { public void run() { AnimateandSlideShow(); } }; final int delay = 2000; final long period = 2000; final Timer timer =
final Runnable mUpdateResults = new Runnable() {
public void run() {
AnimateandSlideShow();
}
};
final int delay = 2000;
final long period = 2000;
final Timer timer = new Timer();
final Handler mHandler = new Handler();
timer.scheduleAtFixedRate(new TimerTask() {
public void run() {
mHandler.post(mUpdateResults);
}
}, delay, period);
private void AnimateandSlideShow() {
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), IMAGE_IDS[currentimageindex%IMAGE_IDS.length]);
slidingimage = (ImageView)findViewById(R.id.mainImageView);
int imViewheight = 400;
int imViewwidth = 600;
Bitmap scaledBitmap = Bitmap.createScaledBitmap(bitmap, imViewwidth, imViewheight, true);
slidingimage.setImageBitmap(convertColorIntoBlackAndWhiteImage(scaledBitmap));
currentimageindex++;
slidingimage.startAnimation(fadeInAnimation);
slidingimage.startAnimation(fadeOutAnimation);
}
我喜欢做过渡淡入,显示1000毫秒,淡出。它的实现方式如下:
Animation fadeOutAnimation = new AlphaAnimation(1.0f, 0.0f);
Animation fadeInAnimation = new AlphaAnimation(0.0f, 1.0f);
fadeInAnimation.setDuration(2000);
fadeOutAnimation.setDuration(2000);
现在发生的只是淡入淡出。只有一个。如何使图像先淡入,然后显示1000毫秒并淡出。我可以使用以下方法实现:
animationSet.addAnimation(fadeInAnimation);
animationSet.addAnimation(fadeOutAnimation);
fadeInAnimation.setDuration(2000);
fadeInAnimation.setStartOffset(0);
fadeOutAnimation.setDuration(2000);
fadeOutAnimation.setStartOffset(2000 + 1000);
slidingImage.startAnimation(animationSet);
对于您要完成的任务,当前计时器逻辑似乎有点复杂。我建议使用动画来计时(以下只是一个代码草案):
试试看
Animation fadeInAnimation = AnimationUtils.loadAnimation(this, R.anim.your_fade_in_anim);
Animation fadeoutAnimation = AnimationUtils.loadAnimation(this, R.anim.your_fade_out_anim);
imageView.startAnimation(fadeinAnim);
imageView.startAnimation(fadeoutAnim);
fadein.xml
<?xml version="1.0" encoding="UTF-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<alpha android:fromAlpha="0.0" android:toAlpha="1.0"
android:interpolator="@android:anim/accelerate_interpolator"
android:duration="2000"/>
</set>
你试过了吗?还是一样,只有一种方法。淡入发生了,但没有淡出。嗯,我在发布之前在测试应用程序上试过,并观察了两个动画,它们之间有1000个延迟。你尝试过单一映像吗?我已经更新了我的问题,我已经实现为runnable。我想我错过了一些关于延迟、周期、淡入淡出的同步。我已经更新了答案。随着新代码图像淡入,停留1秒,淡出,然后显示下一个图像。是的,你是对的。我只需要更新我的最终整数延迟=7000;最终长周期=7000;以覆盖淡入和淡出。你的方法有效。谢谢
<?xml version="1.0" encoding="UTF-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<alpha android:fromAlpha="1.0" android:toAlpha="0.0"
android:interpolator="@android:anim/accelerate_interpolator"
android:duration="2000"/>
</set>
Animation fadeInAnimation = AnimationUtils.loadAnimation(this, R.anim.your_fade_in_anim);
Animation fadeoutAnimation = AnimationUtils.loadAnimation(this, R.anim.your_fade_out_anim);
imageView.startAnimation(fadeinAnim);
imageView.startAnimation(fadeoutAnim);