這期內(nèi)容當(dāng)中小編將會給大家?guī)碛嘘P(guān)如何在Android中利用Viewpager取消滑動,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
創(chuàng)新新互聯(lián),憑借10年的成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站經(jīng)驗(yàn),本著真心·誠心服務(wù)的企業(yè)理念服務(wù)于成都中小企業(yè)設(shè)計(jì)網(wǎng)站有近千家案例。做網(wǎng)站建設(shè),選創(chuàng)新互聯(lián)。
前言
現(xiàn)在很多app,首頁不允許滑動切換(因?yàn)轫撁婕虞d吧),但是又用viewpage來管理frgament.因?yàn)榉奖懵?
以前在網(wǎng)上找的例子:
public class NoScrollViewPager extends ViewPager { public NoScrollViewPager(Context context, AttributeSet attrs) { super(context, attrs); } public NoScrollViewPager(Context context) { super(context); } @Override public boolean dispatchTouchEvent(MotionEvent ev) { //不攔截,否則子孩子都無法收到事件,一般這個自定義的時候都不作處理 return super.dispatchTouchEvent(ev); } @Override public boolean onInterceptTouchEvent(MotionEvent ev) { return super.onInterceptTouchEvent(ev); } @Override public boolean onTouchEvent(MotionEvent ev) { return true; }
這個自定義如果繼承的Viewpager是低版本的,那么是沒問題的.
但是如果你編譯時用是高版本的api,5.0以后吧.上面這個自定義就會失效,
你會發(fā)現(xiàn),會有細(xì)微的滑動.還是能滑動的
判斷老的還是新的,看setOnPageChangeListener就知道了
最新的Viewpager里面這個方法已經(jīng)廢棄了,改成addOnPageChangeListener()
了.
由于之前改viewpager做懶加載.一直保留了一個老版本的Viewpager使用.直到最近才發(fā)現(xiàn).
改進(jìn)后
public class NoScrollViewPager extends ViewPager { private boolean isScroll; public NoScrollViewPager(Context context,AttributeSetattrs{ super(context, attrs); } public NoScrollViewPager(Context context) { super(context); } /** * 1.dispatchTouchEvent一般情況不做處理 *,如果修改了默認(rèn)的返回值,子孩子都無法收到事件 */ @Override public boolean dispatchTouchEvent(MotionEvent ev) { return super.dispatchTouchEvent(ev); // return true;不行 } /** * 是否攔截 * 攔截:會走到自己的onTouchEvent方法里面來 * 不攔截:事件傳遞給子孩子 */ @Override public boolean onInterceptTouchEvent(MotionEvent ev) { // return false;//可行,不攔截事件, // return true;//不行,孩子無法處理事件 //return super.onInterceptTouchEvent(ev);//不行,會有細(xì)微移動 if (isScroll){ return super.onInterceptTouchEvent(ev); }else{ return false; } } /** * 是否消費(fèi)事件 * 消費(fèi):事件就結(jié)束 * 不消費(fèi):往父控件傳 */ @Override public boolean onTouchEvent(MotionEvent ev) { //return false;// 可行,不消費(fèi),傳給父控件 //return true;// 可行,消費(fèi),攔截事件 //super.onTouchEvent(ev); //不行, //雖然onInterceptTouchEvent中攔截了, //但是如果viewpage里面子控件不是viewgroup,還是會調(diào)用這個方法. if (isScroll){ return super.onTouchEvent(ev); }else { return true;// 可行,消費(fèi),攔截事件 } } public void setScroll(boolean scroll) { isScroll = scroll; } }
上述就是小編為大家分享的如何在Android中利用Viewpager取消滑動了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
網(wǎng)站欄目:如何在Android中利用Viewpager取消滑動
瀏覽地址:http://sd-ha.com/article16/gpihdg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供關(guān)鍵詞優(yōu)化、網(wǎng)站設(shè)計(jì)、商城網(wǎng)站、網(wǎng)頁設(shè)計(jì)公司、營銷型網(wǎng)站建設(shè)、服務(wù)器托管
聲明:本網(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)