[Android] 使用ViewPager 實現導航,androidviewpager

來源:互聯網
上載者:User

[Android] 使用ViewPager 實現導航,androidviewpager

 

轉載請標註:轉載於http://www.cnblogs.com/Liuyt-61/p/6582667.html 

------------------------------------------------------------------

 

首先先瞭解ViewPager實現的出效果是能夠使視圖左右滑動。

ViewPager在XML檔案中的聲明和其他一些控制項的聲明有點兒不一樣
而android.support.v4.view是Android介面特殊效果的第三方載入的jar包,能夠向下相容。
<android.support.v4.view.ViewPager        ...        ...></android.support.v4.view.ViewPager>

載入顯示的頁卡:需要將layout布局檔案轉型為View對象

(1)LayoutInflater lf = getLayoutInfalter().from(this);lf.inflate(resource,root);
(2)View.inflate(context,resource,root);

PagerTabStrip 和 PagerTitleStrip

看命名也能夠知道,這倆用來設定Title的就像主介面底部顯示的目錄(、通訊錄、發現、我)一樣,能夠導航使用者所滑到的頁面Title。

<android.support.v4.view.ViewPager        ...>    <android.support.v4.view.PagerTabStrip            ...            ...            >    </android.support.v4.view.PagerTabStrip></android.support.v4.view.ViewPager><!-- PagerTitleStrip的定義也和PagerTabTitle一樣,在ViewPager中  -->

一般在使用時,二者取一用即可,如果兩者同時使用,PagerTabStrip會失效

當然,PagerTabStrip 和 PagerTitleStrip也通過設定一些屬性來美化導航目錄

                private PagerTabStrip tabStrip;                      tabStrip = (PagerTabStrip) findViewById(R.id.tabStrip);                tabStrip.setBackgroundColor(Color.GRAY);             tabStrip.setTextColor(Color.BLACK);                tabStrip.setDrawFullUnderline(false);                tabStrip.setTabIndicatorColor(Color.GREEN);                    

 

對於ViewPager對應的有三種不同的適配器,所對應的資料來源也有所不同

(1)PagerAdapter  ---- 資料來源:List<View>

 

package com.Liuyt.s03_e19_viewpager;import java.util.List;import android.support.v4.view.PagerAdapter;import android.view.View;import android.view.ViewGroup;public class MyPagerAdapter extends PagerAdapter {    private List<View> viewList;    private List<String> titleList;    public MyPagerAdapter(List<View> viewList, List<String> titleList) {        this.viewList = viewList;        this.titleList = titleList;    }    /*     * 得到頁卡的數量     */    @Override    public int getCount() {        // TODO Auto-generated method stub        return viewList.size();    }    /*     * 判斷View是否屬於Object對象     */    @Override    public boolean isViewFromObject(View arg0, Object arg1) {        // TODO Auto-generated method stub        return arg0 == arg1;    }    /*     * 執行個體化一個頁卡     */    @Override    public Object instantiateItem(ViewGroup container, int position) {        // TODO Auto-generated method stub        container.addView(viewList.get(position));        return viewList.get(position);    }    /*     * 銷毀一個頁卡     */    @Override    public void destroyItem(ViewGroup container, int position, Object object) {        // TODO Auto-generated method stub        container.removeView(viewList.get(position));    }    /*     * 設定viewPager的標題     */    @Override    public CharSequence getPageTitle(int position) {        // TODO Auto-generated method stub        return titleList.get(position);    }}

 

(2)FragmentPagerAdapter ---- 資料來源:List<Fragment>

package com.Liuyt.s03_e19_viewpager;import java.util.List;import android.support.v4.app.Fragment;import android.support.v4.app.FragmentManager;import android.support.v4.app.FragmentPagerAdapter;public class MyFragmentPagerAdapter extends FragmentPagerAdapter{    private List<Fragment>fragList;    private List<String>titleList;        public MyFragmentPagerAdapter(FragmentManager fm,List<Fragment>fragList,List<String>titleList) {        super(fm);        // TODO Auto-generated constructor stub        this.fragList = fragList;        this.titleList = titleList;    }    @Override    public Fragment getItem(int arg0) {        // TODO Auto-generated method stub        return fragList.get(arg0);    }    @Override    public int getCount() {        // TODO Auto-generated method stub        return fragList.size();    }    @Override    public CharSequence getPageTitle(int position) {        // TODO Auto-generated method stub        return titleList.get(position);    }}

 

(3)FragmentStatePagerAdapter ---- 資料來源:List<Fragment>

這兒就不貼代碼了,FragmentStatePagerAdapter的代碼和FragmentPagerAdapter 的代碼差不很多,兩者差別在於一個在滑動之後會調用destroy的方法銷毀頁卡,而另一個並不會對頁卡進行銷毀。

 

最後是監聽器,ViewPager使用OnPagerChangeListener監聽器來監聽所滑動到的是哪個頁面,中間常用的方法是public void onPagerSelected(int arg0){}

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.