学习备忘
最近发现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");
viewPager.setAdapter(new MyAdapter());
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
结束!