您好,登錄后才能下訂單哦!
首先先了解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){}
以上就是本文的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持億速云!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。