Android JetPack学习总结(十五)

ViewPager2+TabLayout实现三个简单页面

Demo地址

之前实现底部导航栏用的是BottomNavigation,使用BottomNavigation有以下几个特点:1.页面之间不能通过滑动来实现跳转;2.每次跳转都需要重新创建Fragment;3.如果当前页面不在navigation的start页面,每次按下返回键都会都先先返回到start页面。

使用ViewPager2+TabLayout可以完美地解决上面三个问题。其实我不明白BottomNavigation的优势在哪里。

public class MainActivity extends AppCompatActivity {
    TabLayoutMediator tabLayoutMediator;//配置策略
    ViewPager2 viewPager2;
    TabLayout tabLayout;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        viewPager2=findViewById(R.id.viewPager2);
        tabLayout=findViewById(R.id.tabLayout2);
        viewPager2.setAdapter(new FragmentStateAdapter(this) {
            @NonNull
            @Override
            public Fragment createFragment(int position) {//每一个页面对应要创建的对应的页面
                switch (position){
                    case 0:
                        return new ScaleFragment();
                    case 1:
                        return new RotateFragment();
                    default:
                        return new TranslateFragment();
                }
            }

            @Override
            public int getItemCount() {//需要实现几个页面
                return 3;
            }
        });

        tabLayoutMediator=new TabLayoutMediator(tabLayout, viewPager2, new TabLayoutMediator.TabConfigurationStrategy() {
            @Override
            public void onConfigureTab(@NonNull TabLayout.Tab tab, int position) {
                switch (position){
                    case 0:
                        tab.setText("缩放");
                        break;
                    case 1:
                        tab.setText("旋转");
                        break;
                    default:
                        tab.setText("位移");
                }
            }
        });
        tabLayoutMediator.attach();
    }
}

发表评论