91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在android應用中利用ViewPager實現一個滑動翻頁效果

發布時間:2020-11-26 16:52:26 來源:億速云 閱讀:208 作者:Leah 欄目:移動開發

這期內容當中小編將會給大家帶來有關怎么在android應用中利用ViewPager實現一個滑動翻頁效果,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

實現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,以上實現的是翻頁效果是:上面一頁被滑出界面時,下面一頁慢慢顯現,透明度慢慢加大,并且大小由小慢慢變大。

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

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

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]這個區間 , 其他兩個的View都已經看不到了~~

 假設現在ViewPager在A頁現在滑出B頁,則:

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

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

上述就是小編為大家分享的怎么在android應用中利用ViewPager實現一個滑動翻頁效果了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

广灵县| 永登县| 彭州市| 内江市| 顺义区| 绥江县| 乐陵市| 江油市| 东乡县| 仪征市| 安国市| 贵定县| 黑山县| 嵩明县| 呼玛县| 九龙县| 正镶白旗| 龙井市| 旺苍县| 霍林郭勒市| 教育| 永安市| 济源市| 金川县| 余庆县| 福泉市| 那坡县| 长武县| 疏附县| 子长县| 沙洋县| 古丈县| 孟津县| 通许县| 积石山| 沂南县| 政和县| 香格里拉县| 册亨县| 泊头市| 高陵县|