有两项活动。
活动A是使用getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
活动B是正常活动(状态栏可见)。
我需要在活动A和活动B之间导航。
问题是,当状态栏变为可见并且活动调整大小时,从A到B会有一个抖动动作。
知道如何确保从一个平稳过渡到另一个活动吗?
此外,我正在使用幻灯片和幻灯片动画来进行活动之间的转换。
答案 0 :(得分:2)
您可以在切换活动时简单地使用动画,
startActivity(new Intent(FirstActivity.this, SecondActivity.class));
overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);
编辑:
替换以下块
<translate
android:duration="300"
android:fromXDelta="100%"
android:fromYDelta="0%"
android:toXDelta="0%"
android:toYDelta="0%">
这一个
<translate
android:duration="300"
android:fromXDelta="100%"
android:fromYDelta="0%"
android:toXDelta="0%"
android:toYDelta="0%">
<alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="300" />
注意:强>
整个代码应该看起来像这样,
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="300"
android:fromXDelta="100%"
android:fromYDelta="0%"
android:toXDelta="0%"
android:toYDelta="0%">
<alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="300" />
</set>
可选方式:(参考:article)
不要在现有动画中添加alpha,如果有帮助,请尝试这种方式,
替换
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
与
WindowManager.LayoutParams attributes = getWindow().getAttributes();
attributes.flags |= WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN | WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS;
getWindow().setAttributes(attributes);
答案 1 :(得分:1)
我在我的样式中使用Theme.AppCompat.Light.NoActionBar
作为我要显示为全屏的活动,然后由@MehulJoisar正确指出
WindowManager.LayoutParams attributes = getWindow().getAttributes();
attributes.flags |= WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN | WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS;
getWindow().setAttributes(attributes);
快乐编码:)