2016-01-28 14 views
9

アクティビティ遷移を実装しようとしていますが、その効果を見ることができません。ここでアクティビティ遷移が動作しない

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_architecture); 
     setUpWindowAnimations(); 
    } 

private void setUpWindowAnimations() { 
     if (android.os.Build.VERSION.SDK_INT >= 21) { 
      Log.i("ANIM", "Fade called"); 
      Fade fade = new Fade(2); 
      fade.setDuration(3000); 
      getWindow().setExitTransition(fade); 
     } 
    } 

第二の活動のためにコードされています:ここに私の最初の活動のためのコードは、私がフェードアウトアニメーションを設定しているにもかかわらず

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_image); 
     setUpWindowAnimations(); 
    } 

private void setUpWindowAnimations() { 
     if (android.os.Build.VERSION.SDK_INT >= 21) { 
      Log.i("ANIM", "slide called"); 
      Slide slide = new Slide(Gravity.LEFT); 
      slide.setDuration(3000); 
      getWindow().setEnterTransition(slide); 
     } 
    } 

、何のフェージングがありませんが、また、スライドに動作しますデフォルトの方法です。つまり、方向はLEFTではなくBOTTOMです。

Hereが私のvalues/style.xmlで、hereが私のv21/styles.xmlです。ここで

は私AndroidManifest.xml次のとおりです。

<application 
     android:name=".MyApplication" 
     android:allowBackup="true" 
     android:hardwareAccelerated="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:largeHeap="true" 
     android:theme="@style/AppTheme"> 

なぜこれらの遷移が動作し、どのようにそれらを動作させるためにされていません。私はpaste.ubuntu.comを使用しました.SOエディタがxmlを適切に表示していなかったからです。

+0

あなたのカスタムトランジションで 'styles.xml'でスタイルを定義しましたか? –

+0

@IgorGanapolskyいいえ、私はしていません。両方の 'styles.xml'を確認することができます。私はリンクを張っています。 –

+0

貼ったペースト・ブントゥン・リンクが効きません。 –

答えて

2

setContentViewの前に宣言する。

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setUpWindowAnimations(); 
     setContentView(R.layout.activity_architecture); 

    } 

private void setUpWindowAnimations() { 
     if (android.os.Build.VERSION.SDK_INT >= 21) { 
      Log.i("ANIM", "Fade called"); 
      Fade fade = new Fade(2); 
      fade.setDuration(3000); 
      getWindow().setExitTransition(fade); 
     } 
    } 

他のソリューションは、

Api21

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> 
     <!-- Customize your theme here. --> 
     <item name="colorPrimary">@color/colorPrimary</item> 
     <item name="colorPrimaryDark">@color/colorPrimaryDark</item> 
     <item name="colorAccent">@color/colorAccent</item> 
     <item name="android:windowContentTransitions">true</item> 
     <item name="android:windowTransitionBackgroundFadeDuration">1000</item> 
    </style> 
</resources> 

はその後にこのコードを置くためにこれがあなたのスタイルでなければなりませんxmlTransitionを作成し、そこに

<?xml version="1.0" encoding="utf-8"?> 
<transitionSet xmlns:android="http://schemas.android.com/apk/res/android" 
    android:duration="1000" 
    android:interpolator="@android:interpolator/accelerate_decelerate"> 
    <fade android:fadingMode="fade_out"/> 
    <slide android:slideEdge="bottom"/> 
</transitionSet> 

を、このXMLコードを置きますあなたの活動はbefo setCreateView

if (Build.VERSION.SDK_INT >= 21) { 

      TransitionInflater inflater = TransitionInflater.from(this); 
      Transition transition = inflater.inflateTransition(R.transition.transition_a); 
      getWindow().setExitTransition(transition); 
     } 

再これは、セットアップ2つのアクティビティ これが動作する間、あなたの意図をした後、次の2行を追加しますsetCreateView

if(Build.VERSION.SDK_INT >= 21){ 
      Slide slide = new Slide(); 
      slide.setDuration(1000); 
      getWindow().setEnterTransition(slide); 
     } 
+0

これは機能しません。変更は発生しませんでした。更新された回答 –

+0

それが動作する場合私に知らせてください –

+1

それはまた動作していません。私はスライドの方向を左に変え、まだそれは下からスライドしています。 –

30
Bundle bundle = ActivityOptions.makeSceneTransitionAnimation(this).toBundle(); 
this.startActivity(intent,bundle); 

前に、他のアクティビティにする必要があります。

startActivity(intent)メソッドを使用してアクティビティを開始することはできません。 バンドルを使用してアクティビティ間の遷移を指定する必要があります。

+0

これは受け入れられる回答である必要があります! –

関連する問題