项目之底部导航栏(二)

来源:互联网 发布: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
原创粉丝点击