| | |
| | | package com.duqing.missions; |
| | | |
| | | import android.os.Bundle; |
| | | import com.google.android.material.bottomnavigation.BottomNavigationView; |
| | | import androidx.appcompat.app.AppCompatActivity; |
| | | import androidx.navigation.NavController; |
| | | import androidx.navigation.Navigation; |
| | | import androidx.navigation.ui.AppBarConfiguration; |
| | | import androidx.navigation.ui.NavigationUI; |
| | | import androidx.viewpager2.widget.ViewPager2; |
| | | |
| | | import com.duqing.missions.base.FragmentAdapter; |
| | | import com.duqing.missions.base.activities.BaseActivity; |
| | | import com.duqing.missions.databinding.ActivityMainBinding; |
| | | import com.duqing.missions.ui.main.hall.HallFragment; |
| | | import com.duqing.missions.ui.main.home.HomeFragment; |
| | | import com.duqing.missions.ui.main.mine.MineFragment; |
| | | |
| | | public class MainActivity extends AppCompatActivity { |
| | | public class MainActivity extends BaseActivity<ActivityMainBinding> { |
| | | |
| | | private ActivityMainBinding binding; |
| | | |
| | | @Override |
| | | protected void onCreate(Bundle savedInstanceState) { |
| | | super.onCreate(savedInstanceState); |
| | | |
| | | binding = ActivityMainBinding.inflate(getLayoutInflater()); |
| | | setContentView(binding.getRoot()); |
| | | |
| | | BottomNavigationView navView = findViewById(R.id.nav_view); |
| | | // Passing each menu ID as a set of Ids because each |
| | | // menu should be considered as top level destinations. |
| | | AppBarConfiguration appBarConfiguration = new AppBarConfiguration.Builder( |
| | | R.id.navigation_home, R.id.navigation_dashboard, R.id.navigation_notifications) |
| | | .build(); |
| | | NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment_activity_main); |
| | | NavigationUI.setupActionBarWithNavController(this, navController, appBarConfiguration); |
| | | NavigationUI.setupWithNavController(binding.navView, navController); |
| | | public void initViews() { |
| | | setStatusBarBgColor(R.color.red); |
| | | setStatusBarTextColor(false); |
| | | binding.navView.setOnItemSelectedListener(item -> { |
| | | for(int i = 0 ; i < binding.navView.getMenu().size() ; i ++){ |
| | | if(item.getItemId() == binding.navView.getMenu().getItem(i).getItemId()){ |
| | | binding.viewPager2.setCurrentItem(i); |
| | | return true; |
| | | } |
| | | } |
| | | return false; |
| | | }); |
| | | final FragmentAdapter fragmentAdapter = new FragmentAdapter(this); |
| | | fragmentAdapter.addFragment(new HomeFragment()); |
| | | fragmentAdapter.addFragment(new HallFragment()); |
| | | fragmentAdapter.addFragment(new MineFragment()); |
| | | //设置当前可见Item左右可见page数,次范围内不会被销毁 |
| | | //禁用预加载 |
| | | binding.viewPager2.setOffscreenPageLimit(ViewPager2.OFFSCREEN_PAGE_LIMIT_DEFAULT); |
| | | binding.viewPager2.setAdapter(fragmentAdapter); |
| | | binding.viewPager2.setCurrentItem(0); |
| | | binding.viewPager2.setUserInputEnabled(false); //true:滑动,false:禁止滑动 |
| | | binding.viewPager2.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() { |
| | | @Override |
| | | public void onPageSelected(int position) { |
| | | binding.navView.getMenu().getItem(position).setChecked(true); |
| | | } |
| | | }); |
| | | binding.viewPager2.setCurrentItem(0);//设置默认第 |
| | | } |
| | | |
| | | |
| | | } |