如何为更改背景图像设置动画?

时间:2016-09-08 17:01:54

标签: android animation

我正在创建一个模糊基础活动的新活动。我通过执行以下操作创建了这个:

  • 在旧活动中,截取屏幕截图并在Intent
  • 中将其作为bytearray发送
  • 在新活动中,为其指定透明主题
  • 让新活动从Intent中获取图像,然后将其设置为背景。
  • 在上方有一层模糊背景。

然而,我想淡化背景变化,而不是瞬间。

这就是我现在正在做的事情:

if (getIntent().hasExtra("image")) {
    byte[] byteArray = getIntent().getByteArrayExtra("image");
    if (byteArray != null) {
        Bitmap bmp = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);
        BitmapDrawable drawable = new BitmapDrawable(getResources(), bmp);

        if (drawable != null) {
            mBackgroundFrame.setBackground(drawable);
        }
    }
}

如何使用淡入淡出来设置setBackground(drawable)的动画?

2 个答案:

答案 0 :(得分:1)

假设mBackgroundFrameImageView,您可以按照以下步骤进行淡入淡出:

mBackgroundFrame.setBackground(drawable);
Animation animation = AnimationUtils.loadAnimation(this, R.anim.fadein);
mBackgroundFrame.startAnimation(animation);

创建anim/fadein.xml资源:

<?xml version="1.0" encoding="UTF-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <alpha
        android:duration="3000"
        android:fromAlpha="0.0"
        android:interpolator="@android:anim/accelerate_interpolator"
        android:toAlpha="1.0" />
</set>

答案 1 :(得分:0)

您只需使用overridePendingTransition

即可
Intent i = new Intent(this, NewlyStartedActivity.class);
startActivity(i);
overridePendingTransition(R.anim.fade_in, R.anim.fade_out);

fade_in.xml

<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
           android:interpolator="@android:anim/accelerate_interpolator"
           android:fromAlpha="0.0" android:toAlpha="1.0"
           android:duration="500" />

fade_out.xml

<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
           android:interpolator="@android:anim/accelerate_interpolator"
           android:fromAlpha="1.0" android:toAlpha="0.0"
           android:fillAfter="true"
           android:duration="500" />

这将淡出当前活动并淡入新活动。