文档章节

详解Android中那些酷炫返回方式的实现

Jack_1900
 Jack_1900
发布于 2014/07/27 22:30
字数 790
阅读 591
收藏 23

Android手机都会有返回键,不管是实体键,还是虚拟键。Android用户主要也都是通过这个返回键操控页面返回方式的,不比IOS逼格甚高的只保留一个操作键。这种方式是最普遍的返回方式,还有一种也是比较常见的,那就是页面内部自己响应。绝大多数APP每个页面的设计图顶部左侧都会有一个返回键图标,偶尔也有奇葩的设计放在底部左侧,点击这个图标即finish掉当前页面。简单的介绍完了最常见的两种方式,下面为大家介绍两种更友好的交互方式。

拿大家比较常用的三款社交软件的交互来说。腾讯微博的返回方式除去上述说的两种,还有一种是这样的,当手势落在页面的左侧,随手势滑动页面也跟着滑动。当手指抬起时,X坐标大于屏幕宽度的一半时,页面会继续向右侧滑进而finish当前页面;如果X坐标仍在屏幕的左侧的话,页面是会侧滑到原先的位置,还原当前页面。如果有描述不清或者不大明白的地方,请打开手机上的腾讯微博自己体验一下。

还有一种交互方式,就是目前QQ、新浪微博采用的,交互是这样的。手指落下的位置可以随意,但是当手指抬起时,只要能满足两个条件,当前页面会自动finish的。

条件一、对应X坐标的位移要大于某个阀值,大概是屏幕宽度的1/3的样子(X坐标横向向右增大)

条件二、Y坐标的位移的绝对值小于某个阀值,大概在20dp左右,主要为了防止Y位移的干扰(Y坐标纵向向下增大)

如有不清,打开二者中任一体验一下。

下面我就为大家介绍这两种比较新鲜的交互方式的实现。为了方便,我把两者的功能都抽象到了基类BaseActivity中了,如果哪个页面需要添加这两种交互方式,直接继承就能实现功能了。

交互一实现,封装的很好,使用很简单

交互二实现

看下效果:

如有兴趣和需求的同学,请到Github上面 clone。

源码地址:https://github.com/JackCho/AndroidSwipBack

如果觉得对你有所帮助,欢迎大家订阅我的微信公众账号——Android干货分享(ID:android_share)。下面是微信的二维码,为你提供及时高质的Android干货。技术交流QQ群:318588906,欢迎大家加群,共同探讨下Android和Java技术,一起壮大我们的微信干货分享社区。

© 著作权归作者所有

共有 人打赏支持
Jack_1900
粉丝 225
博文 35
码字总数 34078
作品 1
普陀
程序员
私信 提问
加载中

评论(10)

Jack_1900
Jack_1900

引用来自“wuzhao”的评论

吃个饭,终于找到解决办法,那就是设置<item name="android:windowIsTranslucent">true</item>,然后自定义的<item name="android:windowAnimationStyle">@style/ActivityAnimation</item>ActivityAnimation样式让其继承@android :style/Animation.Translucent就ok了
少年好身手,也解了我的一个问题
wuzhao
wuzhao
吃个饭,终于找到解决办法,那就是设置<item name="android:windowIsTranslucent">true</item>,然后自定义的<item name="android:windowAnimationStyle">@style/ActivityAnimation</item>ActivityAnimation样式让其继承@android :style/Animation.Translucent就ok了
wuzhao
wuzhao

引用来自“wuzhao”的评论

请问楼主可以不设置这个属性<item name="android:windowIsTranslucent">true</item>,有其他的办法避免滑动回退过程中,左半边是黑的情况吗?

引用来自“Jack_1900”的评论

这个必须得设置,其他的方法暂时没找到
多次尝试无果,介个有点蛋疼
Jack_1900
Jack_1900

引用来自“wuzhao”的评论

请问楼主可以不设置这个属性<item name="android:windowIsTranslucent">true</item>,有其他的办法避免滑动回退过程中,左半边是黑的情况吗?
这个必须得设置,其他的方法暂时没找到
wuzhao
wuzhao
请问楼主可以不设置这个属性<item name="android:windowIsTranslucent">true</item>,有其他的办法避免滑动回退过程中,左半边是黑的情况吗?
Jack_1900
Jack_1900

引用来自“wuzhao”的评论

我发现了,设置了这个属性<item name="android:windowIsTranslucent">true</item>,会让自己设置的<item name="android:windowAnimationStyle">@style/ActivityAnimation</item>对所有的Activity都失效,可是如果不设置android:windowIsTranslucent=true, 滑动过程中,左半边都是黑的
wuzhao
wuzhao
我发现了,设置了这个属性<item name="android:windowIsTranslucent">true</item>,会让自己设置的<item name="android:windowAnimationStyle">@style/ActivityAnimation</item>对所有的Activity都失效,可是如果不设置android:windowIsTranslucent=true, 滑动过程中,左半边都是黑的
wuzhao
wuzhao
楼主,刚才试了试,挺好用的,就是为什么我的Activity打开和关闭动画都失效了,变成手机默认的了,很不和谐,请问有该怎么解决呢?
Jack_1900
Jack_1900

引用来自“wuzhao”的评论

请问楼主,用了这个,Activity的结束动画是不是就不应该再设置了?
如果你调用了scrollToFinishActivity方法的话,你就不用加动画了。当然你也建议自定义,直接调用finish,然后自己加动画。
wuzhao
wuzhao
请问楼主,用了这个,Activity的结束动画是不是就不应该再设置了?
Android 5.0+高级动画开发 矢量图动画 轨迹动画 路径变换

第1章 课程介绍 为了成就更多高逼格的人才,我专门整理了Android5.0以后主推的实现酷炫动画的新技术,教你掌握实现动画的高逼格技巧。课程中我会详细讲解每个动画效果实现的原理和所用的技术...

17087075817
2018/05/14
0
0
【压岁干货】精彩技术博客+优秀源码集锦

虽然2015年已经过了一月有余,但在中国,好像只有过了春节才算进入新的一年。眼看着这也春节倒计时了,大家好像又都忙了起来,赶项目赶项目…… 从DevStore整理了一些优秀的技术博客和源码作...

牵着蜗牛去西藏
2015/02/04
1K
4
android 新闻应用、Xposed模块、酷炫的加载动画、下载模块、九宫格控件等源码

Android精选源码 灵活的ShadowView,可替代CardView使用(http://www.apkbus.com/thread-604595-1-1.html) 基于Tesseract-OCR实现自动扫描识别手机号(http://www.apkbus.com/thread-604597-1-......

Android爱开源
2018/12/26
0
0
仿MIUI音量变化环形进度条实现

Android中使用环形进度条的业务场景其实蛮多的,比如下载文件的时候使用环形进度条,会给用户眼前一亮的感觉;再比如我大爱的MIUI系统,它的音量进度条就是使用环形进度条,尽显小米"为发烧而...

Jack_1900
2014/07/25
0
0
Android 开发程序员必备网站

开发必备网站: Android 开发各种工具下载 Android 开发国内大牛集合 Android 开发技术博客周刊 Android 开发技术周报中文版 Android 优秀开源项目集合以及源码分析 Android 万能的技术交流社...

白jian
2016/11/25
576
1

没有更多内容

加载失败,请刷新页面

加载更多

深入理解Spring MVC 思想

目录 一、前言 二、spring mvc 核心类与接口 三、spring mvc 核心流程图 四、spring mvc DispatcherServlet说明 五、spring mvc 父子上下文的说明 六、springMVC-mvc.xml 配置文件片段讲解 ...

呵呵哒灬
34分钟前
1
0
数据库技术-Mysql主从复制与数据备份

数据库技术-Mysql 主从复制的原理: MySQL中数据复制的基础是二进制日志文件(binary log file)。一台MySQL数据库一旦启用二进制日志后,其作为master,它的数据库中所有操作都会以“事件”...

须臾之余
昨天
12
0
Git远程仓库——GitHub的使用(一)

Git远程仓库——GitHub的使用(一) 一 、 Git远程仓库 由于你的本地仓库和GitHub仓库之间的传输是通过SSH加密的,所以需要一下设置: 步骤一、 创建SSH key 在用户主目录下,看看有没有.ss...

lwenhao
昨天
2
0
SpringBoot 整合

springBoot 整合模板引擎 SpringBoot 整合Mybatis SpringBoot 整合redis SpringBoot 整合定时任务 SpringBoot 整合拦截器...

细节探索者
昨天
1
0
第二个JAVA应用

第二个JAVA应用 方法一:配置文件: # cd /usr/local/tomcat/conf/# vim server.xml</Host> <Host name="www.wangzb.cc" appBase="/data/wwwroot/www.wangzb.cc" //引用所......

wzb88
昨天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部