侧滑回退的layout(类似IOS侧滑回退到上一个activity)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了侧滑回退的layout(类似IOS侧滑回退到上一个activity),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2124字,纯文字阅读大概需要4分钟。
内容图文
用过apple的同学应该都知道,大多数IOS应用都支持侧滑回退,就不详细说明了,直接上图:
作为使用ios的android开发者来说,我是特别喜欢这个功能的,既然这样,那就在android上也实现这个功能吧。
构思:
1、要处理滑动事件,而且优先级比较高,所以必须在父View中处理,也就是我们layout中的顶级View(当然这里说的顶级View不是DecorView,仅仅是layout里面的第一层View),一般是ViewGroup。
2、既然是ViewGroup,我们得思考下,这个滑动事件我们是在哪个方法里处理,有同学说了,onTouchEvent(),OK,我们再分析下,假如我们在onTouchEvent()中处理,由view的事件分发我们可以知道:
我们知道了这个循序以后,所以我们得选择优先处理事件的方法,这个就可以从onInterceptTouchEvent()和dispatchTouchEvent()中选,这里我选择了dispatchTouchEvent(),为什么,我也不知道...
3、实现原理
只有横向滑动才处理,并且,只有从边缘滑动才能触发此事件,其实这就简单了,直接上代码。
@Override public boolean dispatchTouchEvent(MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: startX = event.getX(); //判断是否是从边缘滑动 //不是,此事件继续向下分发 if (startX <= OFFSET_DISTANCE) { return true; } else { super.dispatchTouchEvent(event); } case MotionEvent.ACTION_MOVE: if (startX <= OFFSET_DISTANCE) { currentX = (int) event.getX(); distanceX = (int) (currentX - startX); mScroller.startScroll(-currentX, 0, -distanceX, 0); invalidate(); } break; case MotionEvent.ACTION_UP: if (startX <= OFFSET_DISTANCE) { endX = event.getX(); //判断是否到达关闭activity的阀值 if (endX - startX > BACK_DISTANCE) { //是 通过接口回调 if (callback != null) { mScroller.startScroll(-currentX, 0, -(getScreentWidth() - currentX), 0); callback.invokeBack(); } else { mScroller.startScroll(0, 0, 0, 0); } } else { mScroller.startScroll(0, 0, 0, 0); } invalidate(); } break; } return super.dispatchTouchEvent(event); }
<pre name="code" class="java"> public void setBackListener(BackViewInterface callback) { this.callback = callback; } public interface BackViewInterface { void invokeBack(); }
使用方式:
1、在BaseActivity中实现接口
2、在子activity中的使用
千万不要忘了在子activity中注册接口
3 、特别注意
由于我们仅仅是滑动的View而在上面提到的真正的顶级view还是没动,没动会带来什么问题呢,虽然栈顶activity的View滑动了,但是滑动的背后是全白的,这个就是真正顶级View的背景色,所以说到这里,大家知道该怎么做了吧?把Activity主题设置成透明的就ok啦,但是注意要把layout的背景设置成白色。
大功告成啦,上图:
下次有时间给大家分享一个悬浮效果的简单案例:
详情可以关注https://github.com/ray0807
https://github.com/ray0807/ShareFramework/blob/master/balloon/simplifyCorelibs/src/main/java/com/corelibs/views/SplideBackLinearLayout.java
原文:http://blog.csdn.net/u012076212/article/details/50981215
内容总结
以上是互联网集市为您收集整理的侧滑回退的layout(类似IOS侧滑回退到上一个activity)全部内容,希望文章能够帮你解决侧滑回退的layout(类似IOS侧滑回退到上一个activity)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。