1. 程式人生 > >Viewpager的使用簡單認識(1)

Viewpager的使用簡單認識(1)

viewpager的是為了 實現左右滑動切換頁面的效果, 常用於與導航欄和 廣告欄
ViewPager+Fragment配合使用。
1.ViewPager類需要一個PagerAdapter介面卡類給它提供資料。
2.Viewpager 繼承自viewgroup是一個容器類。

1.簡單使用

(1)匯入佈局 viewpager控制元件存在v4jar包裡 使用的時候需要先匯入找到控制元件android.support.v4.view.ViewPager
(2)PageAdapter 必須重寫的四個函式:

 int getCount()  \\返回要滑動的VIew的個數
 boolean
isViewFromObject(View arg0, Object arg1) \\ view和object是否有關聯 Object instantiateItem(ViewGroup container, int position) 第一:將當前檢視新增到container中, 第二:返回當前View void destroyItem(ViewGroup container, int position,Object object) 從當前container中刪除指定位置(position)的View;

先看效果為了方便3個view的顏色分別是黃綠藍 為了看起來明顯一些。第一個介面效果


第二個介面效果第三個介面效果

1.佈局

<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.viewpagerdemo.MainActivity$PlaceholderFragment">
<android.support.v4.view.ViewPager
android:id="@+id/viewpger"
android:layout_width="wrap_content"
android:layout_gravity="center"
android:layout_height="wrap_content" />
</RelativeLayout>

檔案

(2) MainActivity 裡的程式碼

public class MainActivity extends ActionBarActivity {
    private ViewPager viewPager;//viewpager控制元件
    private View view1, view2, view3;//3個view存放3個佈局檔案
    PagerAdapter pagerAdapter;//pageradpter必須要重寫的介面卡 
    private List<View> viewlist;//把佈局存放在集合裡邊作為資料來源

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.fragment_main);
        viewPager = (ViewPager)findViewById(R.id.viewpger);//找控制元件
        LayoutInflater inflater = getLayoutInflater();//佈局載入器
        view1 = inflater.inflate(R.layout.first_layout, null);//
        view2 = inflater.inflate(R.layout.second_layout, null);
        view3 = inflater.inflate(R.layout.three_layout, null);
        viewlist = new ArrayList<View>(); // 存放View的集合
        viewlist.add(view1);
        viewlist.add(view2);
        viewlist.add(view3);

        pagerAdapter = new PagerAdapter() {
                //初始化繫結資料
            @Override
            public Object instantiateItem(View container, int position) {
                // TODO Auto-generated method stub
                ((ViewGroup) container).addView(viewlist.get(position));

                return viewlist.get(position);
            }

               // 滑動切換的時候銷燬當前的元件
            @Override
            public void destroyItem(View container, int position, Object object) {
                // TODO Auto-generated method stub
                ((ViewPager) container).removeView(viewlist.get(position));
            }

              // 每次滑動的時候生成的元件
            @Override
            public boolean isViewFromObject(View arg0, Object arg1) {
                // TODO Auto-generated method stub
                return arg0 == arg1;
            }
              // viewpager中的元件數量
            @Override
            public int getCount() { 
                // TODO Auto-generated method stub
                return viewlist.size();
            }
        };
        viewPager.setAdapter(pagerAdapter);//設定adpter
    }

}