今天就跟大家聊聊有关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中怎么实现右滑返回上一个界面有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。