8

ここではかなり簡単な質問ですが、すでにこれを尋ねている人を見つけることができないようです。ほとんどの場合、適切なキーワードを使用していません。

いずれにせよ、これが私のシナリオです:

Webビューを表示する新しいアクティビティを開始します。新しいアクティビティに切り替えたときに必要なアニメーションを取得するために、overridePendingTransitionを呼び出しました。これは正常に機能します(少なくとも、アニメーション部分は正常に機能します)。ただし、効果を損なうことがいくつかあります。

私が欲しいのは、ウェブビューを前のアクティビティの上に下からスライドさせ、ユーザーが押し戻すと、サイトの外にスライドして戻るようにすることです。これの2番目の部分は魅力のように機能しますが、最初の部分は私が望んでいるものではありません。

新しいアクティビティをトリガーするとすぐに、古いアクティビティが非表示になり、代わりに黒が表示されるため、Webビューが黒の上をスライドするように見えます。前のアクティビティを非表示にするのではなくバックグラウンドで残してもらいたいので、Webビューはその上をスライドします。これは可能ですか?

ありがとう!

4

5 に答える 5

11

私は同じことを探してここに来ましたが、現在の答えは役に立ちませんでした。質問が出されてから4か月後に、これがお役に立てば幸いです。

私の意見では、これはAndroidプラットフォームのバグが原因です。理由は次のとおりです。

  • exitAnimが0の場合にのみ発生します。
  • 'translate'要素でのみ発生します。「アルファ」要素(フェードイン、フェードアウト)は正常に機能します。

これが私の回避策です:

@Override
protected void onResume() {
    overridePendingTransition(R.anim.mu_slide_in_left, R.anim.mu_no_anim);
    super.onResume();
}

@Override
protected void onPause() {
    overridePendingTransition(0, R.anim.mu_slide_out_right);
    super.onPause();
}

どこmu_no_anim.xmlにありますか

<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
   android:interpolator="@android:anim/accelerate_interpolator"
   android:fromAlpha="1.0" android:toAlpha="1.0" android:duration="100000" />

つまり、これは、信頼できるアルファメカニズムを指定して、100秒でアルファ1からアルファ1にフェードすることで、送信アクティビティを強制的に表示したままにします。つまり、完全に表示したままにします。

回避策は完全ではありません。たとえば、新しいアクティビティがダイアログから呼び出された場合、ダイアログはアクティビティが所定の位置にスライドすると閉じられたように見えますが、そのアクティビティを閉じると再び元に戻ります。

于 2012-11-02T16:01:44.473 に答える
2

overridependingtransitionを使用して、あるアクティビティから別のアクティビティへのスライドトランジションで黒い画面が表示されるという同様の問題がありました。そして私は以下の方法に従いましたそしてそれはうまくいきました

1)animフォルダーにnoanim.xmlを作成しました

    <?xml version="1.0" encoding="utf-8"?>

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

使用済み

overridePendingTransition(R.drawable.lefttorightanim, R.anim.noanim);

元のアニメーションとしての最初のパラメーターと、ダミーアニメーションとしての終了アニメーションである2番目のパラメーター

于 2015-05-07T13:20:05.390 に答える
1

遅いかもしれませんが、アクティビティに別のテーマを使用してみましたか?

これをチェックしてください。

于 2012-06-25T19:40:01.717 に答える
1

目的の効果を実現するカスタムトランジションアニメーションXMLリソースファイルを作成し、次のアクティビティを開始する前にActivity.overridePendingTransitionを呼び出します。

于 2012-06-25T19:57:12.270 に答える
1

遅延終了アニメーションを使用する代わりに、開始するアクティビティのテーマにプロパティを追加して、ウィンドウを半透明にすることができます。これにより、前のアクティビティを確認できます。

<style name="EnteringActivity.Theme" parent="@android:style/Theme.Holo.Light">
    [...]
    <item name="android:windowIsTranslucent">true</item>
    [...]
</style>

注:ダイアログアクティビティを作成する場合は、アクティビティのテーマに次のプロパティも必要になります。

<item name="android:windowBackground">@color/transparent</item>
于 2014-10-06T20:19:52.900 に答える