Android右滑返回上一個界面對于大屏幕的移動用戶很實用,那么Android右滑返回上一個界面的實現方法大家學習的怎樣?別著急,武林技術頻道帶大家細細品味。
Android右滑返回上一個界面的實現方法
public class BaseActivity extends Activity implements OnTouchListener { public ProgressDialog progressDialog; public String states; public RequestQueue mQueue; /** 觸摸時按下的點 **/ PointF downP = new PointF(); /** 觸摸時當前的點 **/ 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(); } } 如上所示,既然要滑動返回上一個界面,我給出的方法是重寫onTouchEvent事件,所以我們實現了OnTouchListener 這個接口,
接下來的事情就是,我們要做些什么事呢,沒錯,就是滑動判斷,至于事件 switch 里面的 各個情況對應的是我們對屏幕做了什么樣的操作就不解釋了,(可以自行百度)如上所示,如果滑動距離超過500像素,就結束當前activity,其實寫到這里基本上就沒了,但是我怎么可能寫這么低端的博客,你們說是不是,好的,重點來了,
博主帥哥,我現在就是用的你這個方法,但是為毛 scrollview 下的布局,對這個接口無效呢,好的,問的漂亮,我的回答是:我tm哪知道,....
OK,我們看下scrollview 源碼:

他喵的,果然重寫了這個方法, 根據 view 觸碰事件的傳遞順序,scrollview會先攔截到事件,所以,我們要做的就是,在不對scrollview本來的攔截事件做改變的情況下,加入我們所需要的需求來滿足我們實現功能, 那么就很簡答了, 當然是 自己 定義一個view,代碼如下:
public class BackScrollView extends ScrollView { /** 觸摸時按下的點 **/ PointF downP = new PointF(); /** 觸摸時當前的點 **/ 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,在如上代碼中,可以看到我們做了一個判斷,當觸摸點像素距離屏幕最左邊200像素以內時,滑動才有效果,否則執行父類方法,沒了? 我僅舉這一例子說明可能存在的一些問題,當然,如果布局中也有其它控件出現類似的情況,那么跟 這個一樣,自己定義一個view,重寫它的 觸摸事件,(其實自定義view很簡單的,哥剛開始也覺得很難,后來 也就那樣....) ,當然,直接finish可能會顯得太單一,你們可以充分發揮你們的想象,可以添加一些動畫進去,使得界面更加炫,
OK,今天就扯到這里,吃飯 time...
本文是武林技術頻道小編介紹的Android右滑返回上一個界面的實現方法,更多的專業知識請繼續關注js.Vevb.com吧!
新聞熱點
疑難解答