国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Android > 正文

android ViewPager實現(xiàn)滑動翻頁效果實例代碼

2019-12-12 03:26:35
字體:
來源:轉載
供稿:網友

實現(xiàn)ViewPager的滑動翻頁效果可以使用ViewPager的setPageTransformer方法,如下:

import android.content.Context;import android.support.v4.view.ViewPager;import android.util.AttributeSet;import android.view.View;public class ReadViewPager extends ViewPager{  public ReadViewPager(Context context)  {    super(context);  }  public ReadViewPager(Context context, AttributeSet attrs)  {    super(context, attrs);    setAnima();  }  public void setAnima()  {    setPageTransformer(true, new PageTransformer()    {      private static final float MIN_SCALE = 0.75f;      @Override      public void transformPage(View view, float position)      {        int pageWidth = view.getWidth();        int pageHeight =view.getHeight();        if (position < -1)        {          // [-Infinity,-1)          // This page is way off-screen to the left.          view.setAlpha(0);        }        else if (position <= 0)        {          // [-1,0]          // Use the default slide transition when moving to the left page          view.setAlpha(1);          view.setTranslationX(0);          view.setScaleX(1);          view.setScaleY(1);        }        else if (position <= 1)        {          // (0,1]          // Fade the page out.          view.setAlpha(1 - position);////          // Counteract the default slide transition//          view.setAlpha(1);          view.setTranslationX(pageWidth * -position);////          // Scale the page down (between MIN_SCALE and 1)          float scaleFactor = MIN_SCALE              + (1 - MIN_SCALE) * (1 - Math.abs(position));          view.setScaleX(scaleFactor);          view.setScaleY(scaleFactor);        }        else        {          // (1,+Infinity]          // This page is way off-screen to the right.          view.setAlpha(0);        }      }    });  }}

核心代碼是android官方demo,以上實現(xiàn)的是翻頁效果是:上面一頁被滑出界面時,下面一頁慢慢顯現(xiàn),透明度慢慢加大,并且大小由小慢慢變大。

不過有一個奇怪的現(xiàn)象,當我做一個答題界面時,剛剛開始我采用ViewPager與View結合實現(xiàn)無限循環(huán)切換,并且采用上面的動畫效果,可是每當我滑動到最后一張,也就是要開始新的一輪循環(huán)的時候,被滑出去的一頁也會出現(xiàn)慢慢變透明的情況,而我用ViewPager結合Fragment實現(xiàn)無限循環(huán)切換的是就不會出現(xiàn)這種效果

如果想要實現(xiàn)仿造駕考寶典的翻頁效果,只要把核心方法改為以下代碼便可以了

setPageTransformer(true, new PageTransformer() {      private static final float MIN_SCALE = 0.75f;      @Override      public void transformPage(View view, float position) {        int pageWidth = view.getWidth();         int pageHeight =view.getHeight();        if (position < -1) { // [-Infinity,-1)          // This page is way off-screen to the left.          view.setAlpha(0);        } else if (position <= 0) { // [-1,0]          // Use the default slide transition when moving to the left page          view.setAlpha(1);          view.setTranslationX(0);          view.setScaleX(1);          view.setScaleY(1);        } else if (position <= 1) { // (0,1]          // Fade the page out.//          view.setAlpha(1 - position);////          // Counteract the default slide transition          view.setAlpha(1);          view.setTranslationX(pageWidth * -position);////          // Scale the page down (between MIN_SCALE and 1)//          float scaleFactor = MIN_SCALE//              + (1 - MIN_SCALE) * (1 - Math.abs(position));//          view.setScaleX(scaleFactor);//          view.setScaleY(scaleFactor);        } else { // (1,+Infinity]          // This page is way off-screen to the right.          view.setAlpha(0);        }      }    });

下面我們來講講position參數:

position的可能性的值有:

[-Infinity,-1)  已經看不到了

(1,+Infinity] 已經看不到了

 [-1,1]

重點看[-1,1]這個區(qū)間 , 其他兩個的View都已經看不到了~~

 假設現(xiàn)在ViewPager在A頁現(xiàn)在滑出B頁,則:

A頁的position變化就是( 0, -1]

B頁的position變化就是[ 1 , 0 ]

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 岗巴县| 内江市| 成都市| 恩平市| 永年县| 苏州市| 三江| 江永县| 拉萨市| 平顺县| 江源县| 扬中市| 松桃| 砚山县| 拉孜县| 峨山| 聂拉木县| 安顺市| 莲花县| 集贤县| 论坛| 新巴尔虎右旗| 冕宁县| 包头市| 楚雄市| 七台河市| 酒泉市| 临高县| 富平县| 新巴尔虎左旗| 垫江县| 鄂伦春自治旗| 北流市| 喀喇沁旗| 英德市| 新建县| 阜城县| 江油市| 界首市| 囊谦县| 恩平市|