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

溫馨提示×

溫馨提示×

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

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

怎么在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

汝南县| 石狮市| 福鼎市| 河曲县| 洞口县| 佛学| 津市市| 馆陶县| 上饶县| 凉山| 庆安县| 资源县| 罗平县| 大港区| 大庆市| 大埔县| 临沧市| 措勤县| 镇远县| 九龙城区| 富裕县| 景泰县| 饶河县| 合川市| 阳春市| 平舆县| 肃宁县| 新河县| 二连浩特市| 东乡族自治县| 沂水县| 涿鹿县| 延安市| 神农架林区| 确山县| 涟水县| 合肥市| 疏勒县| 德化县| 大关县| 滁州市|