viewpager過渡頁

學習引導:

http://blog.csdn.net/bobo8945510/article/details/52743570 第二節 viewpager實現滑動條功能

http://blog.csdn.net/bobo8945510/article/details/52779629 第三節 viewpager實現滑動條及導航功能

http://blog.csdn.net/bobo8945510/article/details/52786360 第四節 viewpager實現帶小園點過渡頁

viewpager的用法

一、谷歌官方給我們提供的一個兼容低版本安卓設備的軟件包,裏面包囊了只有在安卓3.0以上可以使用的api。而viewpager就是其中之一!

二、現在只要做個APP,幾乎就不會少得了這個組件。今天我開始複習次組件。

三、其實viewPager同listview用法大致相同,也是需要適配器,而viewPager繼承的是PagerAdapter,然後會讓你重寫下面四個方法。

1、 getCount();就是數據的條數
2、isViewFromObject(View view, Object object) ; 這個不慎瞭解,就按照代碼中的寫就行了
3、instantiateItem(ViewGroup container, int position):實例話每個頁面(顯示頁面的方法,請仔細看代碼)
4、destroyItem(ViewGroup container, int position,Object object);刪除索引頁面

一、效果圖

  • u**其實使用viewPager是很容易的,我們先看一個最簡單的圖片輪播。效果如下:**

這裏寫圖片描述

二、如何使用viewPager

1、首先我們需要xml佈局

    <android.support.v4.view.ViewPager
        android:id="@+id/viewp_01"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    </android.support.v4.view.ViewPager>

2、因爲我們是三張圖片輪播,這裏我寫了三個佈局,每個佈局顯示一張圖片,你也可以創建一個圖片集合。找到適合自己的方法,xml如下

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/img01"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.example.enz.viewpagertext.MainActivity">


    <ImageView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@mipmap/guide_350_01"
        />
</LinearLayout>

......下面兩個省略,下面兩個佈局只是圖片不同,其他一切都一樣

3、在代碼中加載我們佈局好的view,代碼中我寫了詳細的介紹

import android.app.Activity;
import android.os.Bundle;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends Activity {
    private ViewPager vp;

    //把定義好的三個佈局進行初始化對象
    private View  item_view01,item_view02,item_view03;
    //創建一個list集合 參數爲view

    private List<View> Mview = new ArrayList<>();

    //用於引用佈局好的三個itemView佈局
    private LayoutInflater inflater;


    private ViewPagerAdapter adapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
       /*
       * LayoutInflater講解
       * 對於一個沒有被載入或者想要動態載入的界面,都需要使用LayoutInflater.inflate()來載入;
       * 對於一個已經載入的界面,就可以使用Activiyt.findViewById()方法來獲得其中的界面元素。
       * 想了解更多:http://www.cnblogs.com/maliqian/p/3473800.html
       * */
        inflater = getLayoutInflater();
        setView();
    }

    private void setView() {
        //初始化viewPager
        vp = (ViewPager)findViewById(R.id.viewp_01);

        item_view01 = inflater.inflate(R.layout.item01,null);
        item_view02 = inflater.inflate(R.layout.item02,null);
        item_view03 = inflater.inflate(R.layout.item03,null);
        //把三個View佈局對象加載到list中,這些就是item的數據
        Mview.add(item_view01);
        Mview.add(item_view02);
        Mview.add(item_view03);

        //把數據傳遞給適配器中,進行數據處理。
        adapter = new ViewPagerAdapter(this,Mview);
        vp.setAdapter(adapter);
    }
}

4、現在就需要把封裝好的data數據,傳遞給viewpager的適配器中,使其顯示到界面中

import android.content.Context;
import android.support.v4.view.PagerAdapter;
import android.view.View;
import android.view.ViewGroup;

import java.util.List;

/**
 * Created by ENZ on 2016/9/29.
 * viewpager繼承的是PagerAdapter
 * 其他同listview大致一樣
 */
public class ViewPagerAdapter extends PagerAdapter {
    private Context context;
    private List<View> viewdata;

    public ViewPagerAdapter(MainActivity mainActivity, List<View> mview) {
        context = mainActivity;
        viewdata = mview;
    }

    //這個方法是獲取一共有多少個item
    @Override
    public int getCount() {
        return viewdata.size();
    }

    //這個就這樣寫就OK ,無需管
    @Override
    public boolean isViewFromObject(View view, Object object) {
        return view==object;
    }

    //這個方法用來實例化頁卡
    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        container.addView(viewdata.get(position),0);
        return viewdata.get(position);
    }

    //刪除實例化頁卡
    @Override
    public void destroyItem(ViewGroup container, int position,
                            Object object) {
        // TODO Auto-generated method stub
        container.removeView(viewdata.get(position));
    }
}

demo:http://download.csdn.net/detail/bobo8945510/9646225

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章