珠海有什么網(wǎng)站網(wǎng)址導(dǎo)航哪個好
ViewPager控件允許頁面在水平方向左右滑動,就像翻書、翻報紙,Android提供了已經(jīng)分裝好的控件。對于ViewPager來說,一個頁面就是一個項(相當(dāng)于ListView的一個列表項),許多頁面組成ViewPager的頁面項。
ListView和GridView的適配器使用的是BaseAdapter。ViewPager的適配器使用的是PagerAdapter。
ListView和GridView的監(jiān)聽器使用的是OnItemClickListener。ViewPager的監(jiān)聽器使用的是OnPageChangeListener。
下面是ViewPager三個常用方法的說明:
(1) setAdapter()? 設(shè)置頁面項的適配器,適配器用的是PagerAdapter及其子類。
(2) setCurrentItem()? 設(shè)置當(dāng)前頁碼,即打開翻頁視圖時默認(rèn)顯示哪個頁面。
(3) addOnPageChangeListener()? 設(shè)置翻頁視圖的頁面切換監(jiān)聽器。該監(jiān)聽器需實現(xiàn)接口OnPageChangeListener下的三個方法:
-1- onPageScrollStateChanged : 在頁面滑動狀態(tài)變化時觸發(fā)。
-2- onPageScrolled : 在頁面滑動過程中觸發(fā)。
-3- onPageSelected : 在選中頁面時,即滑動結(jié)束后觸發(fā)。
1.ViewPager在XML中使用
<androidx.viewpager.widget.ViewPagerandroid:id="@+id/viewPager"android:layout_width=" ~ "android:layout_height=" ~ ">~有翻頁標(biāo)題就添加部分代碼~</androidx.viewpager.widget.ViewPager>
2.每頁的XML布局文件
例. res / layout / viewitem_layout.xml<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:background="@color/white"><ImageViewandroid:id="@+id/imageView"android:layout_width="match_parent"android:layout_height="match_parent"android:scaleType="fitCenter"/></androidx.constraintlayout.widget.ConstraintLayout>
3.翻頁適配器 PagerAdapter
例.class MyPagerAdapter extends PagerAdapter{private List<View> viewList;public MyPagerAdapter(List<View> viewList){this.viewList=viewList;//構(gòu)造函數(shù)用于獲取適配器資源//如在適配器內(nèi)聲明了資源,就不用寫構(gòu)造函數(shù)了}public int getCount() {return viewList.size();}public boolean isViewFromObject( View view, Object object ) {return view.equals(object);}public Object instantiateItem( ViewGroup container, int position ) {//向容器內(nèi)添加指定頁面;返回值也為該頁面container.addView(viewList.get(position));return viewList.get(position);}public void destroyItem( ViewGroup container, int position, Object object ) {//從容器中移出指定頁面container.removeViewInLayout(viewList.get(position));}
}
適配器必須重寫4個方法:?getCount()?、isViewFromObject()?、instantiateItem()?、destroyItem()
4.翻頁監(jiān)聽器 OnPageChangeListener
class MyOnPageChangeListener implements ViewPager.OnPageChangeListener{public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {//在翻頁過程中觸發(fā)//第一個參數(shù)表示當(dāng)前頁面序號;第二個參數(shù)表示當(dāng)前頁面偏移量,取值在0到1之間;第三個參數(shù)表示當(dāng)前頁面的偏移距離}public void onPageSelected(int position) {//在翻頁結(jié)束后觸發(fā)//參數(shù)表示當(dāng)前頁面序號}public void onPageScrollStateChanged(int state) {//在翻頁狀態(tài)改變時觸發(fā)//參數(shù)為翻頁狀態(tài):0為靜止 1為正在滑動 2為滑動完畢//滑動狀態(tài)依次為:正在滑動(1) -> 滑動完畢(2) -> 靜止(0)}}
5.翻頁視圖的使用及設(shè)置
ViewPager viewPager=findViewById(R.id.~);viewPager.setAdapter(new MyPagerAdapter( 參數(shù) ));viewPager.setCurrentItem(0);//監(jiān)聽器可不加
viewPager.addOnPageChangeListener(new MyOnPageChangeListener());
6.翻頁標(biāo)題欄 PagerTitleStrip / PagerTabStrip
為了方便開發(fā)者處理ViewPager的頁碼顯示與切換,Android附帶了兩個控件,分別是PagerTitleStrip和PagerTabStrip。兩者都是在ViewPager頁面上方展示設(shè)定的頁面標(biāo)題,不同之處在于PagerTitleStrip只是單純的文本標(biāo)題效果,無法點擊進行頁面切換;PagerTabStrip類似選項卡效果,文本下面有橫線,點擊左右選項卡即可切換到對應(yīng)頁面。
想在標(biāo)題欄中顯示指定文字,需重寫PagerAdapter的getPageTitle()方法,在這方面兩個控件的處理是一樣的:
class MyPagerAdapter extends PagerAdapter{... ...//用于返回指定序號頁面的標(biāo)題public CharSequence getPageTitle(int position) {return ~ ;}}
翻頁標(biāo)題欄在XML文件中的使用如下:
<androidx.viewpager.widget.ViewPagerandroid:layout_width="match_parent"android:layout_height="match_parent"><androidx.viewpager.widget.PagerTitleStripandroid:id="@+id/pagerTitleStrip"android:layout_width="wrap_content"android:layout_height="wrap_content"android:background="@color/purple_200"/></androidx.viewpager.widget.ViewPager>
翻頁標(biāo)題欄因只有文本,所以樣式只能調(diào)整文本大小及顏色;但因無XML屬性,所以只能在代碼中調(diào)用文本樣式的設(shè)置方法。
PagerTitleStrip pagerTitleStrip=findViewById(R.id.pagerTitleStrip);
pagerTitleStrip.setTextSize( TypedValue.COMPLEX_UNIT_SP , 20 );
pagerTitleStrip.setTextColor( R.color.white );