ViewPager的基本用法
2015-11-25 00:14
218 查看
步骤:
1:在你的布局文件中写一个ViewPager用于存放带左右滑动显示的容器
2:创建另一个布局文件,用于复用装载每一个待显示的页面
3:将你要显示的多个界面放入一个集合中,这几个界面是复用的第二步的布局文件
4:定义一个Adapter继承PagerAdapter,供ViewPageradapter使用,adapter用于适配你要在ViewPager中显示的多个界面,因此你应该将你要显示的多个界面的集合传递给adapter,可以通过adapter的构造器传递list
5:定义一个监听实现OnPageChangeListener,用于当ViewPager的多个页面切换时的监听
base_page.xml
1:在你的布局文件中写一个ViewPager用于存放带左右滑动显示的容器
2:创建另一个布局文件,用于复用装载每一个待显示的页面
3:将你要显示的多个界面放入一个集合中,这几个界面是复用的第二步的布局文件
4:定义一个Adapter继承PagerAdapter,供ViewPageradapter使用,adapter用于适配你要在ViewPager中显示的多个界面,因此你应该将你要显示的多个界面的集合传递给adapter,可以通过adapter的构造器传递list
5:定义一个监听实现OnPageChangeListener,用于当ViewPager的多个页面切换时的监听
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" app:layout_behavior="@string/appbar_scrolling_view_behavior" tools:showIn="@layout/activity_main" tools:context=".MainActivity"> <!--1:写一个ViewPager用于存放带左右滑动显示的容器--> <android.support.v4.view.ViewPager android:id="@+id/guide_pages" android:layout_width="match_parent" android:layout_height="match_parent" /> </RelativeLayout>
<?xml version="1.0" encoding="utf-8"?> <!--2:创建一个view,用于复用每一个待显示的view--> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:orientation="vertical" > <ImageView android:id="@+id/image" android:layout_width="wrap_content" android:layout_height="wrap_content" android:scaleType="centerInside"/> </RelativeLayout>
/**
* 4:定义一个GuidePageAdapter,供ViewPager
* adapter的很重要,用于适配你要在ViewPager中显示的多个界面,因此你应该将你要显示的多个界面传递给adapter
* 这里通过adapter的构造器传递list
*/
public class GuidePageAdapter extends PagerAdapter {
private List<View> views;
public GuidePageAdapter(List<View> pageViews) {
this.views = pageViews;
}
@Override
public void destroyItem(View v, int position, Object arg2) {
((ViewPager) v).removeView(views.get(position));
}
@Override
public void finishUpdate(View arg0) {
}
@Override
public int getCount() {
return views.size();
}
@Override
public Object instantiateItem(View v, int position) {
((ViewPager) v).addView(views.get(position));
return views.get(position);
}
@Override
public boolean isViewFromObject(View v, Object arg1) {
return v == arg1;
}
@Override
public void startUpdate(View arg0) {
}
@Override
public int getItemPosition(Object object) {
return super.getItemPosition(object);
}
@Override
public void restoreState(Parcelable arg0, ClassLoader arg1) {
}
@Override
public Parcelable saveState() {
return null;
}
}
public class MainActivity extends AppCompatActivity {
private ViewPager viewPager;
private List<View> views;//用于存放viewPager中待显示的view,这个view是自定义的一个布局guide_page.xml
private int res[]={R.drawable.guide1,R.drawable.guide2,R.drawable.guide3 , R.drawable.guide5 ,R.drawable.guide4 };//带显示的图片要分别放入guide_page.xml的iv中
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
viewPager = (ViewPager) findViewById(R.id.guide_pages);
initShowingViews();
viewPager.setAdapter(new GuidePageAdapter(views));//将viewPager需要显示的list传递给adapter
viewPager.setOnPageChangeListener(new GuidePageChangeListener());
// viewPager.setOnTouchListener(this);
}
/**
* 3:将你要显示的多个界面放入一个集合中
*/
private void initShowingViews() {
views = new ArrayList<View>();
for (int i=0;i<res.length;i++){
View view=View.inflate(this,R.layout.base_page,null);
ImageView iv= (ImageView) view.findViewById(R.id.image);
iv.setImageResource(res[i]);
views.add(view);
}
}
/**
* 5:定义一个OnPageChangeListener,用于当ViewPager的多个页面切换时的监听
*/
class GuidePageChangeListener implements ViewPager.OnPageChangeListener {
@Override
public void onPageScrollStateChanged(int arg0) {
Log.i("yin", "执行viewPager的onPageScrollStateChanged方法");
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
Log.i("yin","执行viewPager的onPageScrolled方法");
}
@Override
public void onPageSelected(int position) {
Log.i("yin","执行viewPager的onPageSelected方法");
}
}
}
相关文章推荐
- js字符串的分割
- maven构建命令,maven本地工厂的创建,maven骨架的生成,以及在eclipse里创建maven工程
- Android之常用代码片段收集
- HDU 5556 最大独立集
- tcpdump命令使用方法
- llinux 定时器 转载自 http://blog.chinaunix.net/uid-11848011-id-96374.html
- loadrunner
- Java内部类详解
- HDU 1358 Period
- 20135315 宋宸宁 、20135333 苏正生——实验3
- HDU 1358 Period
- Python常见错误(1)
- 020--VS2013 C++ 键盘消息处理
- 使用 Haraka 搭建邮件发送服务器
- HashSet和TreeSet有什么区别?
- C#学习笔记---协变和逆变
- Maven管理Oracle10g和Oracle11g驱动包
- 文本编辑距离
- 黑马程序员——线程
- Android之常用头文件列表