如何避免Activity转换时的黑屏问题?

5
我正在创建一款应用程序,其中几乎所有的动画都是淡入淡出。对于一些页面,元素将会在屏幕上动态出现/消失,而所有的淡化效果都非常自然(应用程序的背景为白色)。然而,在我切换活动时,应用程序会淡出到黑色,然后再淡入到下一个活动。由于所有的背景颜色都相同,我想知道是否有办法避免这种情况,使得背景始终保持相同的颜色,只有上面的元素似乎随着应用程序状态的改变而淡出。
我使用以下代码进行转换:
Intent intent = new Intent(this, NextActivity.class);
startActivity(intent);
finish();
overridePendingTransition(R.anim.fade_in, R.anim.fade_out);

有时候需要使用finish()。我稍微研究了一下,其他人似乎遇到的问题是在NextActivityonCreate()计算密集型操作导致的长时间黑屏。但这对我来说并不是问题。我的onCreate()方法计算量很小,只是定义了一些监听器而已。所有复杂的逻辑都被转移到了线程中。对我来说,这实际上是一个UI问题,我正在寻找解决方法。

尝试在 overridePendingTransition(R.anim.fade_in, R.anim.fade_out); 之前添加 getWindow().setBackgroundDrawableResource(R.drawable.my_drawable); -- 当然,确保有一个非黑色的可绘制对象供其引用。 - JASON G PETERSON
很遗憾,没有起作用。 - mike
你可以尝试在样式中设置这两个属性中的一个或者两个,而不是通过编程来实现:https://dev59.com/pF8d5IYBdhLWcg3w8F-- - JASON G PETERSON
2个回答

2

1

我建议查看这个问题的人去看看另一个问题中Taig的回答。对于想要一个漂亮淡出过渡效果的人来说,这是一个更简单的解决方案:

https://dev59.com/f2ox5IYBdhLWcg3whUqm#34024547

要点是在过渡中仅设置淡出动画,以避免在两个活动淡出时看到启动器背景。因此,第二个活动实际上没有动画。
startActivity( ... );
finish();
overridePendingTransition(0, R.anim.screen_splash_fade_out); // only a fade out animation

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接