在FragNav库

时间:2016-12-21 10:23:37

标签: android android-fragments android-transitions

我试图在片段之间制作动画。我正在使用FragNav库来管理片段。我已经查看了与片段转换相关的几乎所有答案,但无法对问题进行排序。任何人都可以帮助我。我也使用底部标签栏导航到片段。

这是我的MainActivity

public class MainActivity extends AppCompatActivity {


private FragNavController fragNavController;


//indices to fragments
private final int TAB_FIRST = FragNavController.TAB1;
private final int TAB_SECOND = FragNavController.TAB2;
private final int TAB_THIRD = FragNavController.TAB3;
private final int TAB_FOURTH = FragNavController.TAB4;

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

    //FragNav
    //list of fragments
    List<Fragment> fragments = new ArrayList<>(4);

    //add fragments to list
    fragments.add(TrackFragment.newInstance(0));
    fragments.add(SecureFragment.newInstance(0));
    fragments.add(AlertsFragment.newInstance(0));
    fragments.add(MoreFragment.newInstance(0));

    //link fragments to container
    fragNavController = new FragNavController(getSupportFragmentManager(),R.id.container,fragments);
   // FragNavController.setTransitionMode(R.anim.slide_in_left, R.anim.slide_in_right);
    FragNavController.setTransition(R.anim.slide_in_left, R.anim.slide_out_right);

    FragNavController.setTransitionMode();
    //End of FragNav

    AHBottomNavigation bottomNavigation = (AHBottomNavigation) findViewById(R.id.bottom_navigation);

    // Create items
    AHBottomNavigationItem item1 = new AHBottomNavigationItem(R.string.tab_1, R.drawable.track_g, R.color.white);
    AHBottomNavigationItem item2 = new AHBottomNavigationItem(R.string.tab_2, R.drawable.car_g, R.color.white);
    AHBottomNavigationItem item3 = new AHBottomNavigationItem(R.string.tab_3, R.drawable.alarm_g, R.color.white);
    AHBottomNavigationItem item4 = new AHBottomNavigationItem(R.string.tab_4, R.drawable.more_g, R.color.white);


    // Add items
    bottomNavigation.addItem(item1);
    bottomNavigation.addItem(item2);
    bottomNavigation.addItem(item3);
    bottomNavigation.addItem(item4);

    // Set background color
    bottomNavigation.setDefaultBackgroundColor(Color.parseColor("#FFFFFF"));

    // Change colors
    bottomNavigation.setAccentColor(Color.parseColor("#F63D2B"));
    bottomNavigation.setInactiveColor(Color.parseColor("#747474"));

    // Force to tint the drawable (useful for font with icon for example)
    bottomNavigation.setForceTint(true);

    // Manage titles
               bottomNavigation.setTitleState(AHBottomNavigation.TitleState.ALWAYS_SHOW);

    // Set current item programmatically
    bottomNavigation.setCurrentItem(1);

    // Set listeners
    bottomNavigation.setOnTabSelectedListener(new AHBottomNavigation.OnTabSelectedListener() {
        @Override
        public boolean onTabSelected(int position, boolean wasSelected) {
            if (position == 0){
                    fragNavController.switchTab(TAB_FIRST);

                }
                if (position == 1){
                    fragNavController.switchTab(TAB_SECOND);
                }
                  if (position == 2){
                    fragNavController.switchTab(TAB_THIRD);
                  }
                 else if (position == 3){
                    fragNavController.switchTab(TAB_FOURTH);
                  }
            return true;
        }
    });
 }

}

2 个答案:

答案 0 :(得分:1)

更新:根据FragNav的新版本,下面是声明片段的默认事务的实现。

mNavController = FragNavController.newBuilder(savedInstanceState, getSupportFragmentManager(), R.id.myScrollingContent)
                .transactionListener(this)
                .rootFragmentListener(this, 5)
                .defaultTransactionOptions(FragNavTransactionOptions.newBuilder().transition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN).build())
                .build();

答案 1 :(得分:0)

终于得到了答案。

setTransitionMode()不是静态方法,因此需要从FragNavController对象的实例中使用它。

FragNavControler fragNavController = new FragNavController(savedInstanceState, getSupportFragmentManager(), R.id.container, fragments, INDEX_RECENTS);
fragNavController.setTransitionMode(FragmentTransaction.TRANSIT_FRAGMENT_FADE);