我正在尝试在Activity转换上执行自定义动画。该活动应该平滑地向上滑动而不是从侧面滑动。它可以工作,但视图顶部有一个黑条(与状态栏大小相同)。我该如何摆脱黑条?这是我正在使用的代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
overridePendingTransition(R.anim.upin, R.anim.upout);
setContentView(R.layout.screen_login);
}
动画upin:
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromYDelta="100%" android:toYDelta="0%" android:duration="500" />
</set>
动画结束:
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromYDelta="0%" android:toYDelta="0%" android:duration="500" />
</set>
编辑:如果我将所有活动全屏显示,它将完美运行。当然,我并不希望所有的活动都是全屏的。
答案 0 :(得分:7)
好的,找到了一种方法。在您要设置动画的活动中,覆盖您的onCreate方法。在你调用setContentView之前(我不知道这是否有必要,但这是我做的顺序),添加以下代码片段:
ColorDrawable colorDrawable = new ColorDrawable( Color.TRANSPARENT );
getWindow().setBackgroundDrawable( colorDrawable );
这对我来说就像一个魅力,我还没有看到任何其他副作用。
我实际上遇到了同样的问题,偶然发现了你的问题。希望你觉得这很有帮助。
编辑:在运行2.3.4的Nexus One上测试
答案 1 :(得分:1)
好吧,我尝试了一些事情,比如相对于父母进行增量等等。我认为核心问题是活动顶部有额外的空间,即黑条。除了将它从活动中拉出来并使其成为一个视图之外,我无法做任何事情。
将该视图放入ViewAnimator,然后将进入和退出过渡设置为我已经列出的那些,就像魅力一样。我相信没有其他方法可以做到这一点。如果有人想出来,请告诉我,但这解决了我的问题。
答案 2 :(得分:1)
我知道这个问题已经很老了,但我遇到了同样的问题(活动顶部的黑条/空格),这对我来说是固定的:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS,
WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
setContentView(R.layout.your_layout);
}
希望这可以帮助那些偶然发现这个问题的人:)
答案 3 :(得分:0)
解决方法是在overridePendingTransition()中防止黑色背景 https://stackoverflow.com/a/49751078/5423596