最近新做的一个项目,里面的主页面框架,使用的是自定义的viewPager和fragment详细如下:

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.这样便实现了简单的项目页面框架的封装,简单易用,所示代码可以直接拿来用。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值