怎么在Android中自定義ViewPager實(shí)現(xiàn)縱向滑動翻頁效果?相信很多沒有經(jīng)驗(yàn)的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。
十載專注建站、設(shè)計(jì)、互聯(lián)網(wǎng)產(chǎn)品定制設(shè)計(jì)服務(wù),業(yè)務(wù)涵蓋成都品牌網(wǎng)站建設(shè)、商城網(wǎng)站制作、微信小程序定制開發(fā)、軟件系統(tǒng)開發(fā)、重慶APP開發(fā)公司等。憑借多年豐富的經(jīng)驗(yàn),我們會仔細(xì)了解每個客戶的需求而做出多方面的分析、設(shè)計(jì)、整合,為客戶設(shè)計(jì)出具風(fēng)格及創(chuàng)意性的商業(yè)解決方案,創(chuàng)新互聯(lián)建站更提供一系列網(wǎng)站制作和網(wǎng)站推廣的服務(wù),以推動各中小企業(yè)全面信息數(shù)字化,并利用創(chuàng)新技術(shù)幫助各行業(yè)提升企業(yè)形象和運(yùn)營效率。
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的類,我們重點(diǎn)關(guān)注一下swapTouchEvent()方法。這個方法是將MotionEvent事件的x坐標(biāo)換成y坐標(biāo),而y坐標(biāo)換成x坐標(biāo)。當(dāng)然,這個是參考百度的,我們理解了就好。其實(shí)現(xiàn)實(shí)在妙不可言!
public class VerticalPageTransformer implements ViewPager.PageTransformer { @Override public void transformPage(View view, float position) { /** * 0 當(dāng)前界面 * -1 前一頁 * 1 后一頁 */ if (position >= -1 && position <= 1) { view.setTranslationX(view.getWidth() * -position); float yPosition = position * view.getHeight(); view.setTranslationY(yPosition); } } }
上部分代碼,實(shí)現(xiàn)了界面由原來的橫向平移到縱向平移的過程。其思路是這樣的,我畫了一個草圖(湊合看,畢竟連幼兒園都沒畢業(yè),畫畫功底~~)
這張圖描述了我們手機(jī)的屏幕,我們知道ViewPager,默認(rèn)是把三個界面橫向著排一起的,現(xiàn)在我們將其改為縱向的。
如果手指向下滑動,也就是第一個界面(綠色的),它將會進(jìn)入到我們的屏幕,然而當(dāng)前頁(紅色的)將退出屏幕,這是一套完整的流程,手指向上滑動,則方向相反。
view.setTranslationX(view.getWidth() * -position); float yPosition = position * view.getHeight(); view.setTranslationY(yPosition);
看完上述內(nèi)容,你們掌握怎么在Android中自定義ViewPager實(shí)現(xiàn)縱向滑動翻頁效果的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!
本文名稱:怎么在Android中自定義ViewPager實(shí)現(xiàn)縱向滑動翻頁效果
新聞來源:http://www.chinadenli.net/article24/ggiije.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供自適應(yīng)網(wǎng)站、小程序開發(fā)、品牌網(wǎng)站制作、標(biāo)簽優(yōu)化、企業(yè)網(wǎng)站制作、建站公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)