今天就跟大家聊聊有關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);
}看完上述內容,你們對Android中怎么實現右滑返回上一個界面有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。