中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

怎么在Android中自定義ViewPager實現縱向滑動翻頁效果

發布時間:2021-06-04 17:02:34 來源:億速云 閱讀:253 作者:Leah 欄目:移動開發

怎么在Android中自定義ViewPager實現縱向滑動翻頁效果?相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

public class VerticalViewPager extends ViewPager {
  public VerticalViewPager(Context context) {
    super(context);
  }
 
  public VerticalViewPager(Context context, AttributeSet attrs) {
    super(context, attrs);
  }
 
  @Override
  public boolean onTouchEvent(MotionEvent ev) {
    return super.onTouchEvent(swapTouchEvent(MotionEvent.obtain(ev)));
  }
 
  @Override
  public boolean onInterceptTouchEvent(MotionEvent ev) {
    return super.onInterceptTouchEvent(swapTouchEvent(MotionEvent.obtain(ev)));
  }
 
  private MotionEvent swapTouchEvent(MotionEvent event) {
    float width = getWidth();
    float height = getHeight();
    event.setLocation((event.getY() / height) * width, ((event.getX() / width) * height));
    return event;
  }
}

首先,我們自定義一個繼承ViewPager的類,我們重點關注一下swapTouchEvent()方法。這個方法是將MotionEvent事件的x坐標換成y坐標,而y坐標換成x坐標。當然,這個是參考百度的,我們理解了就好。其實現實在妙不可言!

public class VerticalPageTransformer implements ViewPager.PageTransformer {
  @Override
  public void transformPage(View view, float position) {
    /**
     * 0 當前界面
     * -1 前一頁
     * 1 后一頁
     */
    if (position >= -1 && position <= 1) {
      view.setTranslationX(view.getWidth() * -position);
      float yPosition = position * view.getHeight();
      view.setTranslationY(yPosition);
    }
  }
}

上部分代碼,實現了界面由原來的橫向平移到縱向平移的過程。其思路是這樣的,我畫了一個草圖(湊合看,畢竟連幼兒園都沒畢業,畫畫功底~~)

怎么在Android中自定義ViewPager實現縱向滑動翻頁效果

這張圖描述了我們手機的屏幕,我們知道ViewPager,默認是把三個界面橫向著排一起的,現在我們將其改為縱向的。
如果手指向下滑動,也就是第一個界面(綠色的),它將會進入到我們的屏幕,然而當前頁(紅色的)將退出屏幕,這是一套完整的流程,手指向上滑動,則方向相反。

view.setTranslationX(view.getWidth() * -position);
 float yPosition = position * view.getHeight();
 view.setTranslationY(yPosition);

看完上述內容,你們掌握怎么在Android中自定義ViewPager實現縱向滑動翻頁效果的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

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

AI

安徽省| 长白| 彰武县| 汉中市| 岳西县| 永宁县| 广汉市| 定远县| 延津县| 蒲城县| 斗六市| 庆安县| 林州市| 遂昌县| 缙云县| 松溪县| 肥城市| 万安县| 鄂伦春自治旗| 新巴尔虎左旗| 溧水县| 金平| 米林县| 砚山县| 尉氏县| 新闻| 九龙坡区| 郑州市| 右玉县| 丹江口市| 新疆| 苍梧县| 万全县| 浏阳市| 金塔县| 四子王旗| 米林县| 岫岩| 门源| 镇平县| 庆城县|