我要一直往前走

android的点点滴滴。

ViewPager及PagerTabStrip 的使用详解

ViewPager 就是一个滑屏效果的一个控件,使用比较简单。使用过程思路流程基本如下:

在需要添加的ViewPager的布局文件中添加ViewPager控件--->准备好滑屏所有的View--->将这些View添加到数组ViewList中(作为PagerAdapter的数据源),同时设置PagerTabStrip (适配器)--->PagerAdapter 的实现--->为ViewPager设置Adapter

上代码:

1.在需要添加的ViewPager的布局文件中添加ViewPager控件,该控件需要引入V4包

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     android:orientation="vertical" >
 6     
 7     <android.support.v4.view.ViewPager
 8         android:id="@+id/viewpager"
 9         android:layout_width="wrap_content"
10         android:layout_height="wrap_content"
11         android:layout_gravity="center" >
12         
13         <android.support.v4.view.PagerTabStrip 
14             android:id="@+id/pagertab"
15             android:layout_width="wrap_content"
16             android:layout_height="wrap_content"
17             android:layout_gravity="bottom"/>
18             
19     </android.support.v4.view.ViewPager>
20 
21 </LinearLayout>

2.准备好滑屏所有的View,这里我只做三个示例

pager1.xml

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     android:background="@color/mainList1"
 6     android:orientation="vertical" >
 7 
 8     <TextView
 9         android:id="@+id/textView1"
10         android:layout_width="wrap_content"
11         android:layout_height="wrap_content"
12         android:text="精品快餐"
13         android:textSize="30sp" />
14 
15 </LinearLayout>

pager2.xml

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     android:background="@color/mainList2"
 6     android:orientation="vertical" >
 7 
 8     <TextView
 9         android:id="@+id/textView1"
10         android:layout_width="wrap_content"
11         android:layout_height="wrap_content"
12         android:text="足料靓汤"
13         android:textSize="30sp" />
14 
15 </LinearLayout>

pager3.xml

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     android:background="@color/mainList3"
 6     android:orientation="vertical" >
 7 
 8     <TextView
 9         android:id="@+id/textView1"
10         android:layout_width="wrap_content"
11         android:layout_height="wrap_content"
12         android:text="饮料甜品    "
13         android:textSize="30sp" />
14 
15 </LinearLayout>

 

3.将这些View添加到数组ViewList中(作为PagerAdapter的数据源),同时设置PagerTabStrip (适配器)

为了使代码不太过于涣散,这里将后三步的代码放在一起,以方便查看:

 1 package com.robin.act;
 2 
 3 import java.util.ArrayList;
 4 import java.util.List;
 5 import com.robin.testviewpager.R;
 6 import android.app.Activity;
 7 import android.os.Bundle;
 8 import android.support.v4.view.PagerAdapter;
 9 import android.support.v4.view.PagerTabStrip;
10 import android.support.v4.view.ViewPager;
11 import android.view.LayoutInflater;
12 import android.view.View;
13 import android.view.ViewGroup;
14 
15 /**  
16  *  
17  * @author robin  
18  */
19 public class MainAct extends Activity{
20     ViewPager viewpager;
21     List<View> viewList;
22     List<String> titleList;
23     View view1,view2,view3;
24     PagerTabStrip pagerTabStrip;
25     
26     PagerAdapter adapter=new PagerAdapter() {
27         
28         @Override //建立object和view的映射
29         public boolean isViewFromObject(View view, Object object) {
30             return view==object;//由object来生成view  (key-value)
31         }
32         
33         @Override //将页卡view添加到父容器,最后将view作为object返回
34         public Object instantiateItem(ViewGroup container, int position) {
35             container.addView(viewList.get(position));
36             return viewList.get(position); 
37         }
38 
39         @Override //将页卡view从父容器中移除
40         public void destroyItem(ViewGroup container, int position, Object object) {
41             container.removeView(viewList.get(position));
42         }
43         @Override //返回页卡的数量
44         public int getCount() {
45             return viewList.size();
46         }
47         @Override //返回当前页卡对应的标题
48         public CharSequence getPageTitle(int position) {
49             return titleList.get(position);
50         }
51     };
52     
53     
54     @Override
55     protected void onCreate(Bundle savedInstanceState) {
56         super.onCreate(savedInstanceState);
57         setContentView(R.layout.main);
58         initViewPager();
59         
60     }
61     private void initViewPager() {
62         viewpager=(ViewPager)findViewById(R.id.viewpager);
63         
64         //指示器设置
65         pagerTabStrip=(PagerTabStrip)findViewById(R.id.pagertab);
66         pagerTabStrip.setTabIndicatorColor(getResources().getColor(R.color.red));
67         pagerTabStrip.setDrawFullUnderline(true);
68         pagerTabStrip.setBackgroundColor(getResources().getColor(R.color.white));
69         pagerTabStrip.setTextSpacing(50);
70         
71         LayoutInflater inflater=LayoutInflater.from(this);
72         view1=inflater.inflate(R.layout.pager1, null);
73         view2=inflater.inflate(R.layout.pager2, null);
74         view3=inflater.inflate(R.layout.pager3, null);
75                 
76         viewList=new ArrayList<View>();
77         viewList.add(view1);
78         viewList.add(view2);
79         viewList.add(view3);
80         
81         titleList=new ArrayList<String>();
82         titleList.add("精品快餐");
83         titleList.add("足料靓汤");
84         titleList.add("饮料甜品");
85         
86         viewpager.setAdapter(adapter);
87         
88     }
89 
90 }

 

以上运行代码即可看到效果。

 

posted on 2015-11-11 12:44  !5  阅读(923)  评论(0编辑  收藏  举报

导航