ViewPager 滚动界面 类似微信布局

今天看了慕课网的ViewPager仿微信布局,收获良多。废话不多说,直接上代码吧。

代码中关键的地方都加了注释

http://download.csdn.net/detail/qq_31060955/9464976 源码

public class MyViewpagerFragment extends Activity implements View.OnClickListener {

private ViewPager mViewPager;
private PagerAdapter mPagerAdapter;
private List<View> mViews = new ArrayList<>();

private LinearLayout mTopWeixin;
private LinearLayout mTopFrd;
private LinearLayout mTopAddress;
private LinearLayout mTopSetting;

private ImageButton mWinxinIma;
private ImageButton mFrdIma;
private ImageButton mAddressIma;
private ImageButton mSettingIma;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    /**在创建的时候调用,取消自带的顶部栏*/
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.activity_my_viewpager_fragment);

    initView();
    initEvents();
}

private void initEvents() {
    mTopWeixin.setOnClickListener(this);
    mTopFrd.setOnClickListener(this);
    mTopAddress.setOnClickListener(this);
    mTopSetting.setOnClickListener(this);

    /**每当页面发生更改时,将调用或增量*/
    mViewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
            /**获取滚动的当前页面*/
            int currentItem = mViewPager.getCurrentItem();
            resetImg();
            switch (currentItem) {
                case 0:
                    mWinxinIma.setImageResource(R.drawable.tab_weixin_pressed);
                    break;
                case 1:
                    mFrdIma.setImageResource(R.drawable.tab_find_frd_pressed);
                    break;
                case 2:
                    mAddressIma.setImageResource(R.drawable.tab_address_pressed);
                    break;
                case 3:
                    mSettingIma.setImageResource(R.drawable.tab_settings_pressed);
                    break;
            }
        }

        @Override
        public void onPageSelected(int position) {

        }

        @Override
        public void onPageScrollStateChanged(int state) {

        }
    });

}

private void initView() {
    mViewPager = (ViewPager) findViewById(R.id.id_viewpager);

    mTopWeixin = (LinearLayout) findViewById(R.id.id_tab_weixin);
    mTopFrd = (LinearLayout) findViewById(R.id.id_tab_frd);
    mTopAddress = (LinearLayout) findViewById(R.id.id_tab_address);
    mTopSetting = (LinearLayout) findViewById(R.id.id_tab_settings);

    mWinxinIma = (ImageButton) findViewById(R.id.id_tab_weixin_img);
    mFrdIma = (ImageButton) findViewById(R.id.id_tab_frd_img);
    mAddressIma = (ImageButton) findViewById(R.id.id_tab_address_img);
    mSettingIma = (ImageButton) findViewById(R.id.id_tab_settings_img);
    /**将布局添加到 Viewpager 中*/
    LayoutInflater inflater = LayoutInflater.from(this);
    View tab01 =  inflater.inflate(R.layout.tan01, null);
    View tab02 =  inflater.inflate(R.layout.tan02, null);
    View tab03 =  inflater.inflate(R.layout.tan03, null);
    View tab04 =  inflater.inflate(R.layout.tan04, null);

    mViews.add(tab01);
    mViews.add(tab02);
    mViews.add(tab03);
    mViews.add(tab04);

    mPagerAdapter = new PagerAdapter() {

        /**销毁Item*/
        @Override
        public void destroyItem(ViewGroup container, int position, Object object) {
            container.removeView(mViews.get(position));
        }

        /**初始化Item*/
        @Override
        public Object instantiateItem(ViewGroup container, int position) {

            View view = mViews.get(position);
            container.addView(view);
            return view;
        }
        /**有多少个页面*/
        @Override
        public int getCount() {
            return mViews.size();
        }

        @Override/**这个我也不知道,要求是这么写的*/
        public boolean isViewFromObject(View view, Object object) {


            return view == object;
        }
    };

    mViewPager.setAdapter(mPagerAdapter);
}


@Override
public void onClick(View v) {

    resetImg();

    switch (v.getId()){
        case R.id.id_tab_weixin:
            mViewPager.setCurrentItem(0);
            mWinxinIma.setImageResource(R.drawable.tab_weixin_pressed);
            break;
        case R.id.id_tab_frd:
            mViewPager.setCurrentItem(1);
            mFrdIma.setImageResource(R.drawable.tab_find_frd_pressed);
            break;
        case R.id.id_tab_address:
            mViewPager.setCurrentItem(2);
            mAddressIma.setImageResource(R.drawable.tab_address_pressed);
            break;
        case R.id.id_tab_settings:
            mViewPager.setCurrentItem(3);
            mSettingIma.setImageResource(R.drawable.tab_settings_pressed);
            break;
    }
}

/**图片变暗*/
private void resetImg() {
    mWinxinIma.setImageResource(R.drawable.tab_weixin_normal);
    mFrdIma.setImageResource(R.drawable.tab_find_frd_normal);
    mAddressIma.setImageResource(R.drawable.tab_address_normal);
    mSettingIma.setImageResource(R.drawable.tab_settings_normal);
}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值