ViewPager 滚动界面 类似微信布局

来源:互联网 发布:下载办公软件office 编辑:程序博客网 时间:2024/06/05 03:09

今天看了慕课网的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;@Overrideprotected 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);}@Overridepublic 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
原创粉丝点击