2017-03-28 11 views
0

Main Activityのアプリを持っていて、WebViewを使ってウェブページを読み込んでいます。Androidアプリオーバーライドペンディングトランジションが表示されない

ユーザがデバイスの戻るボタン(画面の戻るボタンではありません)を使用して前のWebページに戻るときにアニメーションを設定しようとしましたが、アニメーションがまったく表示されません。

下記のコードはonCreate()の範囲外です。

注:私はoverridePendingTransitionを各行で試してみましたが、何も効果がないとコメントしました。ここで

はコードです:

@Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
     Log.i("BACK", " Back pressed!"); 
     //overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left); 

     if ((keyCode == KeyEvent.KEYCODE_BACK) && this.webView.canGoBack()) { 
      //overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left); 
      this.webView.goBack(); 
      return true; 
     } 
     else{ 
      return super.onKeyDown(keyCode, event); 
     } 
    } 

    @Override 
    public void onBackPressed(){ 
     super.onBackPressed(); 
     //overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left); 
    //finish(); 
     return; 
    } 

私はfinish()を使用している場合、それは代わりに帰るのアプリを終了します。ここで

slide_in_rightのxml:

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

    <translate 
     android:fromXDelta="100%" 
     android:toXDelta="0%" 
     android:duration="500" /> 

    <alpha android:duration="500" android:fromAlpha="0.0" android:toAlpha="1.0" /> 

</set> 

そして最後にslide_out_left:

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android"> 

    <translate 
     android:fromXDelta="0%" 
     android:toXDelta="-100%" 
     android:duration="500" /> 

    <alpha android:duration="500" android:fromAlpha="1.0" android:toAlpha="0.0" /> 

</set> 

私が行方不明ですかわからないです。私はすでに多くのトピックをチェックしていますが、私は私の問題を解決できませんでした。

ありがとうございます。

+0

終了時にスタックに以前の 'Activity'がありますか? –

+0

@KishoreJethavaいいえ他の 'Activity'はありません。現在のアクティビティはメインアクティビティで、ウェブページを読み込む 'WebView'を持っています。したがって、ユーザーがデバイスの戻るボタンをクリックすると、上記のアニメーションが必要になります。出来ますか? – Johny

+0

は 'WebView'だけをアニメーションで閉じたいということですか?私の答えでは、アニメーションでアプリケーションを閉じます –

答えて

0

super.onBackPressed();public void onBackPressed()から削除すると、スーパーコールが発生し、アクティビティが終了するだけで済みます。

にごonBackPressed()コードを変更し

:キショールJethavaで述べたように、はい

@Override 
    public void onBackPressed(){ 
     finish(); 
     overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left); 
    } 

。最初にfinish()を呼び出してからonerridingPendingTransition(..)

+0

私はすでにこれを試しましたが、アプリは終了する代わりに終了します。 – Johny

0

ここに解決策があります!

コールoverridePendingTransitionanimフォルダにanimフォルダ

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android"> 
<translate 
    android:duration="200" 
    android:fromXDelta="-100%" 
    android:toXDelta="0%" /> 
</set> 

activity_back_out.xmlActivity

@Override 
public void onBackPressed() { 
    super.onBackPressed(); 
    finish(); 
    overridePendingTransition(R.anim.activity_backin, R.anim.activity_back_out); 

} 

activity_backin.xmlを終えた後

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android"> 
<translate 
    android:duration="200" 
    android:fromXDelta="0%" 
    android:toXDelta="100%" /> 
</set> 
関連する問題