Android右滑返回上一個(gè)界面的實(shí)現(xiàn)方法
Android右滑返回上一個(gè)界面的實(shí)現(xiàn)方法
public class BaseActivity extends Activity implements OnTouchListener { public ProgressDialog progressDialog; public String states; public RequestQueue mQueue; /** 觸摸時(shí)按下的點(diǎn) **/ PointF downP = new PointF(); /** 觸摸時(shí)當(dāng)前的點(diǎn) **/ PointF curP = new PointF(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.requestWindowFeature(Window.FEATURE_NO_TITLE); } @Override protected void onResume() { super.onResume(); } @Override public boolean onTouchEvent(MotionEvent event) { curP.x = event.getX(); switch (event.getAction()) { case MotionEvent.ACTION_DOWN: downP.x = event.getX(); break; case MotionEvent.ACTION_MOVE: if (curP.x- downP.x > 500) { Log.i("TEST", "move-=-=-=--=-"); finish(); } break; case MotionEvent.ACTION_UP: break; default: break; } return true; } @Override protected void onPause() { super.onPause(); } @Override protected void onDestroy() { super.onDestroy(); } }
如上所示,既然要滑動(dòng)返回上一個(gè)界面,我給出的方法是重寫onTouchEvent事件,所以我們實(shí)現(xiàn)了OnTouchListener 這個(gè)接口,
接下來的事情就是,我們要做些什么事呢,沒錯(cuò),就是滑動(dòng)判斷,至于事件 switch 里面的 各個(gè)情況對(duì)應(yīng)的是我們對(duì)屏幕做了什么樣的操作就不解釋了,(可以自行百度)如上所示,如果滑動(dòng)距離超過500像素,就結(jié)束當(dāng)前activity,其實(shí)寫到這里基本上就沒了,但是我怎么可能寫這么低端的博客,你們說是不是,好的,重點(diǎn)來了,
博主帥哥,我現(xiàn)在就是用的你這個(gè)方法,但是為毛 scrollview 下的布局,對(duì)這個(gè)接口無效呢,好的,問的漂亮,我的回答是:我tm哪知道,....
OK,我們看下scrollview 源碼:
他喵的,果然重寫了這個(gè)方法, 根據(jù) view 觸碰事件的傳遞順序,scrollview會(huì)先攔截到事件,所以,我們要做的就是,在不對(duì)scrollview本來的攔截事件做改變的情況下,加入我們所需要的需求來滿足我們實(shí)現(xiàn)功能, 那么就很簡(jiǎn)答了, 當(dāng)然是 自己 定義一個(gè)view,代碼如下:
public class BackScrollView extends ScrollView { /** 觸摸時(shí)按下的點(diǎn) **/ PointF downP = new PointF(); /** 觸摸時(shí)當(dāng)前的點(diǎn) **/ PointF curP = new PointF(); public BackScrollView(Context context) { super(context); } public BackScrollView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } public BackScrollView(Context context, AttributeSet attrs) { super(context, attrs); } @Override public boolean onTouchEvent(MotionEvent event) { curP.x = event.getX(); switch (event.getAction()) { case MotionEvent.ACTION_DOWN: downP.x = event.getX(); Log.i("TEST", "downP.x-=-=-=--=-" + downP.x); break; case MotionEvent.ACTION_MOVE: Log.i("TEST", "downP.x-=-=-=--=-" + curP.x); if (downP.x < 200) { if (curP.x - downP.x > 500) { return false; } } break; case MotionEvent.ACTION_UP: break; default: break; } return super.onTouchEvent(event); }
OK,在如上代碼中,可以看到我們做了一個(gè)判斷,當(dāng)觸摸點(diǎn)像素距離屏幕最左邊200像素以內(nèi)時(shí),滑動(dòng)才有效果,否則執(zhí)行父類方法,沒了? 我僅舉這一例子說明可能存在的一些問題,當(dāng)然,如果布局中也有其它控件出現(xiàn)類似的情況,那么跟 這個(gè)一樣,自己定義一個(gè)view,重寫它的 觸摸事件,(其實(shí)自定義view很簡(jiǎn)單的,哥剛開始也覺得很難,后來 也就那樣....) ,當(dāng)然,直接finish可能會(huì)顯得太單一,你們可以充分發(fā)揮你們的想象,可以添加一些動(dòng)畫進(jìn)去,使得界面更加炫,
OK,今天就扯到這里,吃飯 time...
如有疑問請(qǐng)留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
相關(guān)文章
Android開發(fā)之利用ListView動(dòng)態(tài)刷新某個(gè)Item
這篇文章主要介紹了Android開發(fā)之利用ListView動(dòng)態(tài)刷新某個(gè)Item的方法,文章給出了詳解的示例代碼,相信對(duì)大家的理解和學(xué)習(xí)具有一定的參考借鑒價(jià)值,有需要的朋友們下面來一起跟著小編學(xué)習(xí)學(xué)習(xí)吧。2016-12-12Android簡(jiǎn)單自定義音樂波動(dòng)特效圖
這篇文章主要為大家詳細(xì)介紹了Android簡(jiǎn)單自定義音樂波動(dòng)特效圖,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-04-04Android實(shí)現(xiàn)購(gòu)物車添加商品動(dòng)畫
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)購(gòu)物車添加商品動(dòng)畫,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-06-06Android的多媒體管理庫(kù)Glide的基本使用示例
這篇文章主要介紹了Android的多媒體管理庫(kù)Glide的基本使用示例,Glide在圖片App中的表現(xiàn)非常好,Google旗下的Yelp也在使用,需要的朋友可以參考下2016-04-04Android 簡(jiǎn)單服務(wù)定位器模式實(shí)現(xiàn)
這篇文章主要介紹了Android 簡(jiǎn)單服務(wù)定位器模式實(shí)現(xiàn),幫助大家更好的理解和學(xué)習(xí)使用Android,感興趣的朋友可以了解下2021-03-03android打開應(yīng)用所在的市場(chǎng)頁(yè)面進(jìn)行評(píng)分操作的方法
這篇文章主要介紹了android打開應(yīng)用所在的市場(chǎng)頁(yè)面進(jìn)行評(píng)分操作的方法,涉及Android操作市場(chǎng)頁(yè)面評(píng)分效果的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-04-04TextView使用SpannableString設(shè)置復(fù)合文本 SpannableString實(shí)現(xiàn)TextView的鏈接
這篇文章主要為大家詳細(xì)介紹了如何利用SpannableString實(shí)現(xiàn)TextView的鏈接效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-08-08Android高仿京東垂直循環(huán)滾動(dòng)新聞欄
通過自定義的LinearLayout,并且textView能夠循環(huán)垂直滾動(dòng),而且條目可以點(diǎn)擊,顯示區(qū)域最多顯示2個(gè)條目,并且還有交替的屬性垂直移動(dòng)的動(dòng)畫效果,通過線程來控制滾動(dòng)的實(shí)現(xiàn)2016-03-03