web-dev-qa-db-ja.com

奇妙な効果を持つoverridePendingTransitionを使用したアクティビティスライドアニメーション

ユーザーが特定のアクティビティに移動したときに表示されるアニメーションを作成しています。基本的に、このアクティビティは上にスライドして表示され、下にスライドして閉じます。このアニメーションを実現するためにoverridePendingTransitionを使用しています。

しかし、スライドには醜い効果があります。それはスクリーンショットで見ることができます: Screen shot

閉じられているアクティビティに表示されている灰色の長方形を見てください。なぜ表示されるのですか?

AndroidのAndroid.R.id.contentビューだと思ったので、背景を変えてみましたが、うまくいきませんでした。

ActionBarSherlockを使用しており、コードを以下に示します。

slide_in_from_bottom.xml

<translate xmlns:Android="http://schemas.Android.com/apk/res/Android"
           Android:fromYDelta="100%p"
           Android:toYDelta="0%p"
           Android:duration="@Android:integer/config_mediumAnimTime"/>

slide_out_to_bottom.xml

<translate xmlns:Android="http://schemas.Android.com/apk/res/Android"
           Android:fromYDelta="0%p"
           Android:toYDelta="100%p"
           Android:duration="@Android:integer/config_mediumAnimTime"/>

none.xml

<alpha xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:duration="0" Android:fromAlpha="1" Android:toAlpha="1"/>

アクティビティの開始:

Intent intent = new Intent();
intent.setClass(getActivity(), PlayerActivity.class);
startActivity(intent);

getActivity().overridePendingTransition(R.anim.slide_in_from_bottom, R.anim.nothing);

アクティビティを閉じる:

@Override
public void onBackPressed() {
    finish();
    overridePendingTransition(R.anim.nothing, R.anim.slide_out_to_bottom);
}
13

私はここで私の問題の答えを見つけました:

https://stackoverflow.com/a/6396465/114071

すべてのアクティビティがサブクラス化されているBaseActivityを作成し、onCreateに次のコードを追加しました。

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

これはおそらくnotificationBarが原因です。次のアクティビティにもnotificationBarがあり、そのスペースが付属しています。わからない、これに対する解決策があるかどうか...フルスクリーンを設定しようとするかもしれませんが、もちろんこれはあなたが望むものではありません。

3
yahya