1.创建一个自定义viewpager,主要是为了方便控制viewpager可滑动与否,代码如下:
/**
* @Describe: 自定义viewPager可禁止滑动
* @Author: huangjc
* @Email: 252431193@qq.com
* @Date: 2018/10/26
*/
public class CustomViewPager extends ViewPager {
private boolean isCanScroll = false;
public CustomViewPager(Context context) {
super(context);
}
public CustomViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
}
/**
* 设置其是否能滑动换页
*
* @param isCanScroll false 不能换页, true 可以滑动换页
*/
public void setScanScroll(boolean isCanScroll) {
this.isCanScroll = isCanScroll;
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
return isCanScroll && super.onInterceptTouchEvent(ev);
}
@Override
public boolean onTouchEvent(MotionEvent ev) {
return isCanScroll && super.onTouchEvent(ev);
}
}
2.创建viewpager的adapter,代码如下:
/**
* @Describe: viewPager的adapter
* @Author: huangjc
* @Email: 252431193@qq.com
* @Date: 2018/10/26
*/
public class ViewPagerAdapter extends FragmentPagerAdapter {
private List<Fragment> fragmentList;
public ViewPagerAdapter(FragmentManager fm, List<Fragment> fragmentList) {
super(fm);
this.fragmentList = fragmentList;
}
@Override
public Fragment getItem(int position) {
return fragmentList.get(position);
}
@Override
public int getCount() {
return fragmentList == null ? 0 : fragmentList.size();
}
}
3.创建各个模块的fragment,储存fragment的数组,初始化viewadapter及绑定viewpager,如下代码:
/**
* @Describe: Main
* @Author: huangjc
* @Email: 252431193@qq.com
* @Date: 2018/10/26
*/
public class MainActivity extends BaseActivity {
@BindView(R.id.view_pager)
CustomViewPager viewPager;
@BindView(R.id.dashboard_iv)
ImageView dashboardIv;
@BindView(R.id.dashboard_tv)
TextView dashboardTv;
@BindView(R.id.dashboard_layout)
LinearLayout dashboardLayout;
@BindView(R.id.inventory_iv)
ImageView inventoryIv;
@BindView(R.id.inventory_tv)
TextView inventoryTv;
@BindView(R.id.inventory_layout)
LinearLayout inventoryLayout;
@BindView(R.id.order_iv)
ImageView orderIv;
@BindView(R.id.order_tv)
TextView orderTv;
@BindView(R.id.order_layout)
LinearLayout orderLayout;
@BindView(R.id.mine_iv)
ImageView mineIv;
@BindView(R.id.mine_tv)
TextView mineTv;
@BindView(R.id.mine_layout)
LinearLayout mineLayout;
/**
* viewpager适配器
*/
private ViewPagerAdapter viewPagerAdapter;
/**
* Fragment
*/
private ArrayList<Fragment> fragmentList;
/**
* 跳转登录页面
*
* @param context
*/
public static void startActivity(Context context) {
Intent intent = new Intent(context, MainActivity.class);
context.startActivity(intent);
}
@Override
protected int getLayoutId() {
return R.layout.activity_main;
}
@Override
protected IBasePresenter initPresenter() {
return null;
}
@Override
protected void init(Bundle savedInstanceState) {
super.init(savedInstanceState);
fragmentList = new ArrayList<>();
fragmentList.add(DashboardFragment.newInstance());
fragmentList.add(InventoryFragment.newInstance());
fragmentList.add(TransactionFragment.newInstance());
fragmentList.add(AdminFragment.newInstance());
dashboardTv.setTextColor(getResources().getColor(R.color.text_blue));
dashboardIv.setImageResource(R.mipmap.ic_dashboard_selected);
viewPagerAdapter = new ViewPagerAdapter(getSupportFragmentManager(), fragmentList);
viewPager.setAdapter(viewPagerAdapter);
viewPager.setOffscreenPageLimit(fragmentList.size());
}
@OnClick({R.id.dashboard_layout, R.id.inventory_layout, R.id.order_layout, R.id.mine_layout})
public void onViewClicked(View view) {
switch (view.getId()) {
case R.id.dashboard_layout:
initColor();
dashboardTv.setTextColor(getResources().getColor(R.color.text_blue));
dashboardIv.setImageResource(R.mipmap.ic_dashboard_selected);
break;
case R.id.inventory_layout:
initColor();
inventoryTv.setTextColor(getResources().getColor(R.color.text_blue));
inventoryIv.setImageResource(R.mipmap.ic_inventory_selected);
break;
case R.id.order_layout:
initColor();
orderTv.setTextColor(getResources().getColor(R.color.text_blue));
orderIv.setImageResource(R.mipmap.icon_order_selected);
break;
case R.id.mine_layout:
initColor();
mineTv.setTextColor(getResources().getColor(R.color.text_blue));
mineIv.setImageResource(R.mipmap.icon_me_selected);
break;
}
}
private void initColor() {
dashboardTv.setTextColor(getResources().getColor(R.color.text_gray));
inventoryTv.setTextColor(getResources().getColor(R.color.text_gray));
orderTv.setTextColor(getResources().getColor(R.color.text_gray));
mineTv.setTextColor(getResources().getColor(R.color.text_gray));
dashboardIv.setImageResource(R.mipmap.ic_dashboard_normal);
inventoryIv.setImageResource(R.mipmap.ic_inventory_normal);
orderIv.setImageResource(R.mipmap.icon_order_normal);
mineIv.setImageResource(R.mipmap.ic_me_normal);
}
}
4.这样便实现了简单的项目页面框架的封装,简单易用,所示代码可以直接拿来用。