2016-10-05 1 views
7

アンドロイドのBottomNavigationビューを実装し、BottomNavigationページとして表示するフラグメントがいくつかあります。 Google Material Design Guide Linesによると、クロスフェードアニメーションでフラグメントを表示したいと思います。Android ViewPagerクロスフェードアニメーション

BottomNavigationのアイテムにタッチすると、ViewPPagerはデフォルトのスライドアニメーションでフラグメントを変更します。

私はthisthisでいくつかの解を読んでいます。これらは実際にアニメーションをフェードさせるものではなく、フェーディングの持続時間を設定できませんでした。

ViewPagerのタブを変更してアニメーションを設定する方法はありますか?

答えて

2

最後に、私の答えが見つかりました。

私のフラグメント(フレームレイアウト)を保持するレイアウトでViewPagerを変更しました。それから、fragmentTransactionにフラグメントを追加しました。

BottomNavigationでアイテムに触れると、現在のフラグメントの隠蔽と新しいフラグメントがfragmentTransactionで定義されたフェードアニメーションで表示されます。

と、これは私のコードです:

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

    addFragmentsToManager(); 
} 

private void addFragmentsToManager() { 
    FragmentManager fragmentManager = getSupportFragmentManager(); 
    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
    fragmentTransaction.setCustomAnimations(R.anim.fade_in, R.anim.fade_out); 

    fragmentTransaction.add(R.id.flContent, tripFragment, tripFragment.getClass().getSimpleName()); 
    fragmentTransaction.add(R.id.flContent, notificationFragment, notificationFragment.getClass().getSimpleName()); 
    fragmentTransaction.add(R.id.flContent, searchFragment, searchFragment.getClass().getSimpleName()); 
    fragmentTransaction.add(R.id.flContent, profileFragment, profileFragment.getClass().getSimpleName()); 

    fragmentTransaction.hide(tripFragment); 
    fragmentTransaction.hide(notificationFragment); 
    fragmentTransaction.hide(searchFragment); 
    fragmentTransaction.hide(profileFragment); 
    fragmentTransaction.commit(); 
} 

private void changeTab(int position) { 
    Fragment fragment; 
    switch (position) { 
     fragment = .....// get framgnet from position 
    } 

    FragmentManager fragmentManager = getSupportFragmentManager(); 
    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
    fragmentTransaction.setCustomAnimations(R.anim.fade_in, R.anim.fade_out); 

    fragmentTransaction.hide(prvFragment); 
    fragmentTransaction.show(fragment).commit(); 
    prvFragment = fragment; 
} 
1

断片を追加し、隠しに問題があります。

アプリケーションがアイドル状態になり、アプリケーションに戻ったときに電話がスリープモードになると、アクティビティに表示されているすべてのフラグメントが1つのレイアウトに表示されます。

+0

はい、あります。解決方法を見つけることができません – FarshidABZ

関連する問題