Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/224.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android中用于图像转换的动画_Android - Fatal编程技术网

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);