Android ViewPager初探:讓頁面滑動起來

下一篇:《Android ViewPager再探:增長滑動指示條》html

 

ViewPager須要用到適配器PagerAAdapter,如下四個函數須要重寫:java

instantiateItem(ViewGroup container, int position):建立指定位置的頁面視圖。適配器增長即將建立的View視圖到這裏給定的container中。
destroyItem(ViewGroup container, int position, Object object):移除一個給定位置的頁面。
getCount():返回當前有效視圖的個數。
isViewFromObject(View view, Object object):判斷instantiateItem(ViewGroup, int)函數所返回來的Key與一個頁面視圖是不是表明的同一個視圖。android

 

主界面的佈局只要加上api

<android.support.v4.view.ViewPager />數組

便可:app

activity_main.xml:ide

 1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2                 xmlns:tools="http://schemas.android.com/tools"
 3                 android:layout_width="match_parent"
 4                 android:layout_height="match_parent"
 5                 tools:context=".MainActivity">
 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 </RelativeLayout>

 

決定ViewPager有3個頁面,每一個頁面都要寫佈局:函數

以第一個first_page.xml爲例:佈局

 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     <TextView
 6         android:layout_width="match_parent"
 7         android:layout_height="match_parent"
 8         android:gravity="center"
 9         android:text="這是第一頁"
10         android:textSize="20sp"/>
11 
12 </RelativeLayout>

 

MainActivity須要在onCreate裏對其初始化,並調用適配器:this

 1 package com.example.hopecapital.myapplication;
 2 
 3 import android.app.Activity;
 4 import android.os.Bundle;
 5 import android.support.v4.view.ViewPager;
 6 import android.view.LayoutInflater;
 7 import android.view.View;
 8 
 9 import java.util.ArrayList;
10 import java.util.List;
11 
12 
13 public class MainActivity extends Activity {
14     private View first,second,third;
15     private ViewPager viewPager;//對應 <android.support.v4.view.ViewPager/>控件
16     private List<View> viewList;//View數組
17 
18     @Override
19     protected void onCreate(Bundle savedInstanceState) {
20         super.onCreate(savedInstanceState);
21         setContentView(R.layout.activity_main);
22 
23         /*初始化*/
24         viewPager = (ViewPager)findViewById(R.id.viewpager);
25         LayoutInflater inflater = getLayoutInflater();
26         first = inflater.inflate(R.layout.first_page,null);
27         second = inflater.inflate(R.layout.second_page,null);
28         third = inflater.inflate(R.layout.third_page,null);
29 
30         viewList = new ArrayList<View>();// 將要分頁顯示的View裝入數組中
31         viewList.add(first);
32         viewList.add(second);
33         viewList.add(third);
34 
35         /*適配器部分*/
36         NewPagerAdapter pagerAdapter = new NewPagerAdapter(viewList);
37         viewPager.setAdapter(pagerAdapter);
38     }
39 
40 }

 

最後也是最重要的,繼承自PagerAdapter的適配器:

NewPagerAdapter.java:

 1 package com.example.hopecapital.myapplication;
 2 
 3 import android.support.v4.view.PagerAdapter;
 4 import android.view.View;
 5 import android.view.ViewGroup;
 6 
 7 import java.util.List;
 8 
 9 /**
10  * Created by LT on 2015/7/27.
11  */
12 public class NewPagerAdapter extends PagerAdapter{
13     public List<View> viewList;
14 
15     public NewPagerAdapter(List<View> viewList){
16         this.viewList = viewList;
17     }
18 
19     /*下面四個函數是必定要重寫的*/
20     @Override
21     public boolean isViewFromObject(View arg0,Object arg1){
22     //判斷instantiateItem(ViewGroup, int)函數所返回來的Key與一個頁面視圖是不是表明的同一個視圖(判斷key)
23         // TODO Auto-generated method stub
24         return arg0 == arg1;
25     }
26 
27     @Override
28     public int getCount() {//返回要滑動的VIew的個數
29         // TODO Auto-generated method stub
30         return viewList.size();
31     }
32 
33     @Override
34     public void destroyItem(ViewGroup container, int position,
35                             Object object) {//從當前container中刪除指定位置(position)的View;
36         // TODO Auto-generated method stub
37         container.removeView(viewList.get(position));
38     }
39 
40     @Override
41     public Object instantiateItem(ViewGroup container, int position) {
42     //實例化:將當前視圖添加到container中,並返回當前View(傳送key)
43         // TODO Auto-generated method stub
44         container.addView(viewList.get(position));
45 
46         return viewList.get(position);
47     }
48 }

 

以上,便完成了簡單的ViewPager。

相關文章
相關標籤/搜索