ViewPager的简单使用

ViewPager简单介绍:

很多主流的手机应用,当用户首次安装或者更新时,都会出现三四页的引导页,主要用来介绍应用的功能或者新增特效。

引导页就可以通过ViewPager来实现,下面就给读者介绍一种ViewPager最简单基本的用法。


这里简单模仿FlipBoard的引导页,效果图见文章结尾。

首先需要创建引导页的Activity 名为Guide.java 继承自 Activity。

关键代码如下:

 1 public class Guide extends Activity{

 2     private ViewPager vp;

 3     private ViewPagerAdapter vpAdapter;

 4     private List<View> views;

 5     

 6     @Override

 7     protected void onCreate(Bundle savedInstanceState) {

 8         super.onCreate(savedInstanceState);

 9         setContentView(R.layout.guide);

10         initViews();

11     }

12     

13     private void initViews() {

14         LayoutInflater inflater = LayoutInflater.from(this);

15         views = new ArrayList<View>();

16         views.add(inflater.inflate(R.layout.fbone, null));

17         views.add(inflater.inflate(R.layout.fbtwo, null));

18         views.add(inflater.inflate(R.layout.fbthree, null));

19         views.add(inflater.inflate(R.layout.fbfour, null));

20         

21         vpAdapter = new ViewPagerAdapter(views, this);

22         vp = (ViewPager)findViewById(R.id.viewpager);

23         vp.setAdapter(vpAdapter);

24     }

25 }

若想使用ViewPager 需要我们写一个Adapter 名为ViewPagerAdapter 继承自 PagerAdapter。

在这个Adapter内需要简单重写父类的部分方法。

方法 destroyItem 和 instantiateItem 就是我选择重写的。

关键代码如下:

 1 public class ViewPagerAdapter extends PagerAdapter {

 2     

 3     private List<View> views;

 4     private Context context;

 5     

 6     public ViewPagerAdapter(List<View> views, Context context) {

 7         super();

 8         this.views = views;

 9         this.context = context;

10     }

11 

12     @Override

13     public int getCount() {    

14         return views.size();

15     }

16     

17     @Override

18     public void destroyItem(ViewGroup container, int position, Object object) {

19         container.removeView(views.get(position));

20     }

21     

22     @Override

23     public Object instantiateItem(ViewGroup container, int position) {

24         container.addView(views.get(position));

25         return views.get(position);

26     }

27 

28     @Override

29     public boolean isViewFromObject(View view, Object obj) {        

30         return (view==obj);

31     }

32 

33 }

java代码如上述,下面简单介绍xml代码。

前文已经讲述引导页的java代码,对应需要创建一个xml 名为guide.xml。

此处需要注意必须正确导入android.support.v4包,新版本的ADT自带。

代码如下:

 1 <?xml version="1.0" encoding="utf-8"?>

 2 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

 3     android:layout_width="match_parent"

 4     android:layout_height="match_parent" >

 5     

 6     <android.support.v4.view.ViewPager

 7         android:id="@+id/viewpager"

 8         android:layout_width="match_parent"

 9         android:layout_height="match_parent"

10         android:background="#000000"> 

11     </android.support.v4.view.ViewPager>    

12 

13 </RelativeLayout>

写到此处框架就基本完成,只需要我们往里面添加每张引导页的视图。

在上文的Gude.java中的初始化视图方法initViews()中可以看出,我往里面添加了四个布局文件。

下面就只贴出其中一个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:orientation="vertical" >

    

    <ImageView 

        android:layout_width="match_parent"

        android:layout_height="match_parent"

        android:background="@drawable/fbone"/>



</LinearLayout>

尾注 为了简单调试 我修改了Android.Manifest.xml 将程序入口的Activity设为Guide。

效果图如下:

ViewPager的简单使用


转载请注明出处:http://www.cnblogs.com/michaelwong/p/4114947.html

你可能感兴趣的:(viewpager)