Android笔记: ViewPager基本用法
ViewPager控件可以实现多个View(或fragment)滑动切换的效果,属于比较常用的控件.下面用一个简单的例子介绍一下该控件的基本用法.
- 首先是布局文件activity_view_pager.xml,简单起见,该布局文件没有ViewGroup,只有一个ViewPager控件
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/view_pager"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
- 两个用于加载的视图
layout1.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#00ff00"
android:orientation="vertical" >
<Button
android:id="@+id/button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="button" />
</LinearLayout>
layout2.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ff0000"
android:orientation="vertical" >
</LinearLayout>
- 然后是主体的代码,使用过程
- 声明ViewPager控件和需要加载的视图.
- 绑定视图.
- 为ViewPager创建一个PagerAdapter对象.
- 实现PagerAdapter中的方法
- 将adapter绑定到ViewPager对象上.
public class ViewPagerActivity extends Activity {
// 1. 声明ViewPager控件和需要加载的视图.
private ViewPager mViewPager;
private View mView1, mView2;
private ArrayList<View> mViews = new ArrayList<View>();
private Button mButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_view_pager);
bindViews();
initViewPager();
}
// 2. 绑定视图.
private void bindViews() {
mViewPager = (ViewPager) findViewById(R.id.view_pager);
LayoutInflater inflater = getLayoutInflater();
mView1 = inflater.inflate(R.layout.layout1, null);
mView2 = inflater.inflate(R.layout.layout2, null);
// 访问ViewPager引入布局中的控件
mButton = (Button) mView1.findViewById(R.id.button);
mButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
mButton.setText("clicked");
}
});
}
private void initViewPager() {
mViews.add(mView1);
mViews.add(mView2);
// 3. 为ViewPager创建一个PagerAdapter对象.
PagerAdapter adapter = new PagerAdapter() {
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
// 4.1 实现PagerAdapter中的方法
return arg0 == arg1;
}
@Override
public int getCount() {
// 4.2 实现PagerAdapter中的方法
return mViews.size();
}
@Override
public void destroyItem(View container, int position,
Object object) {
// 4.3 实现PagerAdapter中的方法
((ViewPager) container).removeView(mViews.get(position));
}
@Override
public Object instantiateItem(View container, int position) {
// 4.4 实现PagerAdapter中的方法
((ViewPager) container).addView(mViews.get(position));
return mViews.get(position);
}
};
// 5. 将adapter绑定到ViewPager对象上.
mViewPager.setAdapter(adapter);
}
}