我有一个约4-5次观看的活动。它有白色背景。 理想情况下,我希望将整个活动淡化为纯白色,然后淡化新活动。 但由于不可能使用彩色动画,我已经放弃了这个想法。我制作的动画如下所示:
淡入:
<?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="1200"/>
</set>
淡出:
<?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="1200"/>
</set>
我只是通过在我的所有活动中添加以下代码行来设置动画:
overridePendingTransition( R.animator.fadein, R.animator.fadeout);
但问题在于:当使用活动的alpha值淡出时,当alpha值降低时,整个活动变为灰色。白色背景下看起来并不漂亮。
所以我想出了淡出所有关于活动的观点的想法。我的问题:我该如何正确地做到这一点?顺便说一句,如果有人有更好的想法,请随时告诉我。谢谢!
答案 0 :(得分:1)
一种方法是将视图包装在RelativeLayout中,然后给视图充气并将其添加到外部RelativeLayout,背景颜色为00ffffff和fill_parent参数。
在开始新活动之前,使用处理程序和runnable以设置的间隔增加alpha值(并使视图无效)。一旦alpha为255,启动新活动。根据自己的喜好调整Handler.postDelayed()的速度。
答案 1 :(得分:1)
这是一篇来自谷歌Android图形专家的精彩博文 - Old Views Don't Die; They Just Fade Away
我相信你可以将它用于你的项目。查看他在动画上的其他文章和YouTube视频,它们非常棒。祝你好运!
答案 2 :(得分:0)
我在提到的文章空间的启发下回答了我的问题。你会在下面找到我的淡出方法。它使用我上面创建的动画来淡出父容器RelativeLayout中的所有视图。
RelativeLayout container = findViewById(R.id.mainContainer);
for(int i = 0; i < container.getChildCount(); i++)
container.getChildAt(i).startAnimation(AnimationUtils.loadAnimation(c, R.animator.fadeout));
new Handler().postDelayed(new Runnable()
{
@Override
public void run()
{
for(int i = 0; i < container.getChildCount(); i++)
container.getChildAt(i).setVisibility(View.INVISIBLE);
c.startActivity(intent);
}
}, fadeDuration);