您好,登錄后才能下訂單哦!
怎么在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); } } }
上部分代碼,實現了界面由原來的橫向平移到縱向平移的過程。其思路是這樣的,我畫了一個草圖(湊合看,畢竟連幼兒園都沒畢業,畫畫功底~~)
這張圖描述了我們手機的屏幕,我們知道ViewPager,默認是把三個界面橫向著排一起的,現在我們將其改為縱向的。
如果手指向下滑動,也就是第一個界面(綠色的),它將會進入到我們的屏幕,然而當前頁(紅色的)將退出屏幕,這是一套完整的流程,手指向上滑動,則方向相反。
view.setTranslationX(view.getWidth() * -position); float yPosition = position * view.getHeight(); view.setTranslationY(yPosition);
看完上述內容,你們掌握怎么在Android中自定義ViewPager實現縱向滑動翻頁效果的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。