android学习三:ViewPager使用

学习备忘


最近发现app开发使用viewpager左右滑动的情况很多,特学习之,留此贴备忘。

此贴仅ViewPager的使用,简单Demo

1、先在Layout中添加ViewPager,与普通View一样。

<android.support.v4.view.ViewPager         <!-- ViewPager包名路径 -->
    android:id="@+id/viewpager"            <!-- ID -->
    android:layout_width="match_parent"    <!-- 宽度 -->
    android:layout_height="wrap_content"   <!-- 高度 -->
    android:layout_gravity="center" >      <!-- 此View的子View的对齐方式 -->
</android.support.v4.view.ViewPager>

添加滑动页的title只需要在ViewPager里面添加android.support.v4.view.PagerTitleStrip,代码如下:

<android.support.v4.view.ViewPager
    android:id="@+id/viewpager"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center" >
    <android.support.v4.view.PagerTitleStrip
        android:id="@+id/pagertitle"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="top" >
    </android.support.v4.view.PagerTitleStrip>
</android.support.v4.view.ViewPager>

2、接下来在onCreate方法里面得到上面提到的View对象

private ViewPager viewPager;
private PagerTitleStrip pagerTitleStrip;
viewPager = (ViewPager) findViewById(R.id.viewpager);
pagerTitleStrip = (PagerTitleStrip) findViewById(R.id.pagertitle);

3、得到滑动的View,与View的title

List<View> views = new ArrayList<View>();
views.add(LayoutInflater.from(this).inflate(R.layout.tab1, null));
views.add(LayoutInflater.from(this).inflate(R.layout.tab2, null));
views.add(LayoutInflater.from(this).inflate(R.layout.tab3, null));
List<String> titles = new ArrayList<String>();
titles.add("title1");
titles.add("title2");
titles.add("title3");


4、添加Adapter

viewPager.setAdapter(new MyAdapter());


5、Adapter代码

    class MyAdapter extends PagerAdapter {
        @Override
        public void destroyItem(ViewGroup container, int position, Object object) {
            // 销毁Item的时候,在ViewPager里面将view remove掉
            ((ViewPager) container).removeView(views.get(position));
        }

        @Override
        public Object instantiateItem(ViewGroup container, int position) {
            // 实例化Item,先将View添加到ViewPager里面,再返回View
            ((ViewPager) container).addView(views.get(position));
            return views.get(position);
        }

        @Override
        public CharSequence getPageTitle(int position) {
            // 返回当前页的title
            return titles.get(position);
        }

        @Override
        public int getCount() {
            // 返回view的数量
            return views.size();
        }

        @Override
        public boolean isViewFromObject(View arg0, Object arg1) {
            //此方法的原理至今没有弄清楚,有知道的麻烦回下,大家一起学习。谢谢!
            return arg0 == arg1;
        }
    }

Demo代码免积分下载地址:

http://download.csdn.net/detail/xiao_e1/7797111


结束!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值