Как мне избавиться от этой черной полосы во время анимации? - PullRequest
4 голосов
/ 07 апреля 2011

Я пытаюсь выполнить пользовательскую анимацию при переходе 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>

анимация upout:

<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate android:fromYDelta="0%" android:toYDelta="0%" android:duration="500" />
</set>

РЕДАКТИРОВАТЬ: Если я сделаю всеДеятельность в полноэкранном режиме работает отлично.Конечно, я не хочу, чтобы все действия были полноэкранными.

Ответы [ 4 ]

7 голосов
/ 18 июня 2011

Хорошо, нашел способ сделать это.В упражнении, к которому вы анимируете, переопределите свой метод onCreate.Прежде чем вызывать setContentView (я не знаю, нужно ли это, но это в порядке, в котором я это сделал), добавьте следующий фрагмент кода:

ColorDrawable colorDrawable = new ColorDrawable( Color.TRANSPARENT );
getWindow().setBackgroundDrawable( colorDrawable );

Это сработало для меня, и у меня получилось.Других побочных эффектов пока не было.

Я столкнулся с той же проблемой и наткнулся на ваш вопрос.Надеюсь, вы найдете это полезным.

  • groomsy

РЕДАКТИРОВАТЬ: протестировано на Nexus One работает 2.3.4

1 голос
/ 23 сентября 2015

Я знаю, что этот вопрос довольно старый, но я столкнулся с той же проблемой (черная полоса / пробел в верхней части упражнения), и это исправило ее для меня:

@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);
}

Надеюсь, это поможет кому-то, кто наткнется на этот вопрос:)

1 голос
/ 07 апреля 2011

Хорошо, я попробовал несколько вещей, таких как создание дельт относительно родителя и т. Д. Я думаю, что основная проблема заключается в том, что в верхней части упражнения есть дополнительное пространство, то есть черная полоса. Насколько я могу судить, с этим ничего не поделаешь, кроме как вытащить это из игры и сделать из него представление.

Помещение этого вида в ViewAnimator, а затем установка входных и выходных переходов на те, которые я уже перечислил, работает как шарм. Я совершенно уверен, что другого способа сделать это нет. Если кто-нибудь когда-нибудь это выяснит, дайте мне знать, но это решает мою проблему.

0 голосов
/ 10 апреля 2018

Решение здесь для предотвращения черного фона во время overridePendingTransition () https://stackoverflow.com/a/49751078/5423596

...