项目之底部导航栏(二)
来源:互联网 发布:java中的类和方法 编辑:程序博客网 时间:2024/06/04 18:09
1.初始化Fragment
private void initFragment() { String[] mTitles = getResources().getStringArray(R.array.main_titles); BaseFragment[] fragments = new BaseFragment[mTitles.length]; fragments[0] = NewsFragment.getInstance(); fragments[1] = VideoFragment.getInstance(); fragments[2] = GirlFragment.getInstance(); fragments[3] = MineFragment.getInstance(); BaseFragmentAdapter mAdapter = new BaseFragmentAdapter(getSupportFragmentManager(), fragments); mViewPager.setAdapter(mAdapter); mViewPager.setPageMargin(SettingUtil.dip2px(this, 16)); // 设置页面间距 mViewPager.addOnPageChangeListener(this); mViewPager.setCurrentItem(currentTabPosition); // private int currentTabPosition = 0; mNews.setSelected(true); }
2.新建NewsFragment
package com.huading.baselhz;import com.huading.baselhz.base.BaseFragment;/** * 作者:LHZ on 2017/5/3 17:28 * 界面: */public class NewsFragment extends BaseFragment { public static NewsFragment getInstance() { NewsFragment newsFragment = new NewsFragment(); return newsFragment; } @Override protected int getLayoutId() { return 0; } @Override protected void initView() { } @Override protected void lazyFetchData() { }}
3.新建BaseFragmentAdapter
package com.huading.baselhz.adapter;import android.support.v4.app.Fragment;import android.support.v4.app.FragmentManager;import android.support.v4.app.FragmentPagerAdapter;import android.view.ViewGroup;import com.huading.baselhz.base.BaseFragment;/** * Created by LHZ on 2017/3/1. * 通用的FragmentAdapter */public class BaseFragmentAdapter extends FragmentPagerAdapter { private FragmentManager fm; BaseFragment[] fragmentList; private String[] mTitles; public BaseFragmentAdapter(FragmentManager fm, BaseFragment[] fragmentList) { super(fm); this.fm = fm; this.fragmentList = fragmentList; } public BaseFragmentAdapter(FragmentManager fm, BaseFragment[] fragmentList, String[] mTitles) { super(fm); this.fm = fm; this.fragmentList = fragmentList; this.mTitles = mTitles; } @Override public CharSequence getPageTitle(int position) { return mTitles == null ? "" : mTitles[position]; } @Override public Fragment getItem(int position) { return fragmentList[position]; } @Override public int getCount() { if(fragmentList == null) return 0; return fragmentList.length; } /** * 这边并没有创建销毁过程,只创建一次 * @param container * @param position * @return */ @Override public Fragment instantiateItem(ViewGroup container, int position) { Fragment fragment = (Fragment) super.instantiateItem(container, position); fm.beginTransaction().show(fragment).commit(); return fragment; } @Override public void destroyItem(ViewGroup container, int position, Object object) { Fragment fragment = fragmentList[position]; fm.beginTransaction().hide(fragment).commit(); }}
4.对viewPager设置监听,implements ViewPager.OnPageChangeListener
mViewPager.addOnPageChangeListener(this);
@Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { //Empty } @Override public void onPageSelected(int position) { resetTab(); switch (position) { case 0: mNews.setSelected(true); break; case 1: mVideo.setSelected(true); break; case 2: mGirl.setSelected(true); break; case 3: mMine.setSelected(true); break; default: //其他 break; } } @Override public void onPageScrollStateChanged(int state) { //Empty }
初始化tab
private void resetTab() { mNews.setSelected(false); mVideo.setSelected(false); mGirl.setSelected(false); mMine.setSelected(false); }
5.设置按钮点击事件
@OnClick({R.id.news, R.id.video, R.id.girl, R.id.mine}) public void onViewClicked(View view) { switch (view.getId()) { case R.id.news: mViewPager.setCurrentItem(0, false); break; case R.id.video: mViewPager.setCurrentItem(1, false); break; case R.id.girl: mViewPager.setCurrentItem(2, false); break; case R.id.mine: mViewPager.setCurrentItem(3, false); break; default: break; } }
0 0
- 项目之底部导航栏(二)
- 项目之底部导航栏
- Android底部导航栏实现(二)之RadioGroup
- Fragment的应用之底部导航栏的实现(二)之应用ViewPager
- “fullLoad” app(二)之底部导航功能实现
- Android项目导航栏之仿微信底部导航栏TabLayout+ViewPager+Fragment
- Android仿小米商城底部导航栏之二(BottomNavigationBar、ViewPager和Fragment的联动使用)
- iOS之旅--隐藏(去除)导航栏底部横线
- Android底部导航栏实现(一)之BottomNavigationBar
- Android底部导航栏实现(三)之TextView+LinearLayout
- Android底部导航栏实现(四)之TabLayout+ViewPager
- 微信小程序之底部导航栏(一)
- Fragment之底部导航栏的实现
- Android底部导航栏实现之BottomNavigationBar
- Material Design之底部导航栏
- Android之底部导航栏BottomNavigationBar
- android之底部导航
- 底部导航之BottomNavigationBar
- cocopods 二进制化
- 我的Linux学习四(CentOS 7安装mysql)
- 开启关闭短信监听
- Hibernate hql select子句
- IntelliJ IDEA 项目中导入jar包
- 项目之底部导航栏(二)
- Myecilpse复制的web项目改名后部署tomcat中还是原来的名字的修改
- gpiolib及gpio操作
- Guava学习(序)——为Maven项目配置Guava
- fcntl()记录锁
- Java高级特性之枚举学习总结
- 请求与重定向区别
- idea创建maven项目
- SpringMVC拦截器实现登录认证