详解Android中那些酷炫返回方式的实现
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技术,一起壮大我们的微信干货分享社区。

详解Android中那些酷炫返回方式的实现的更多相关文章
- 详解Android中的四大组件之一:Activity详解
activity的生命周期 activity的四种状态 running:正在运行,处于活动状态,用户可以点击屏幕,是将activity处于栈顶的状态. paused:暂停,处于失去焦点的时候,处于pa ...
- 详解Android中AsyncTask的使用
在Android中实现异步任务机制有两种方式,Handler和AsyncTask. Handler模式需要为每一个任务创建一个新的线程,任务完成后通过Handler实例向UI线程发送消息,完成界面的更 ...
- 详解Android中的屏幕方向
屏幕方向 是对Activity而言的,所以你可以在AndroidManifest.xml 文件中,通过<activity> 标记的screenOrientation 属性进行设定,例如: ...
- Python绘制六种可视化图表详解,三维图最炫酷!你觉得呢?
Python绘制六种可视化图表详解,三维图最炫酷!你觉得呢? 可视化图表,有相当多种,但常见的也就下面几种,其他比较复杂一点,大都也是基于如下几种进行组合,变换出来的.对于初学者来说,很容易被这官网上 ...
- 详解Android首选项框架ListPreference
详解Android首选项框架ListPreference 原文地址 探索首选项框架 在深入探讨Android的首选项框架之前,首先构想一个需要使用首选项的场景,然后分析如何实现这一场景.假设你正在编写 ...
- 详解Android Activity---启动模式
相关的基本概念: 1.任务栈(Task) 若干个Activity的集合的栈表示一个Task. 栈不仅仅只包含自身程序的Activity,它也可以跨应用包含其他应用的Activity,这样有利于 ...
- Android Binder IPC详解-Android学习之旅(96)
linux内存空间与BInder Driver Android进程和linux进程一样,他们只运行在进程固有的虚拟空间中.一个4GB的虚拟地址空间,其中3GB是用户空间,1GB是内核空间 ,用户空间是 ...
- 图文详解 Android Binder跨进程通信机制 原理
图文详解 Android Binder跨进程通信机制 原理 目录 目录 1. Binder到底是什么? 中文即 粘合剂,意思为粘合了两个不同的进程 网上有很多对Binder的定义,但都说不清楚:Bin ...
- 详解Android Activity启动模式
相关的基本概念: 1.任务栈(Task) 若干个Activity的集合的栈表示一个Task. 栈不仅仅只包含自身程序的Activity,它也可以跨应用包含其他应用的Activity,这样有利于 ...
随机推荐
- Java学习笔记(16)
需求:使用LinkedList存储一副扑克牌,然后实现洗牌功能 package cn.itcast.list; import java.util.LinkedList; import java.uti ...
- NHibernate官方文档中文版——批量插入(Batch inserts)
A naive approach t7o inserting 100 000 rows in the database using NHibernate might look like this: 一 ...
- Tracing SQL Queries in Real Time for MySQL Databases using WinDbg and Basic Assembler Knowledge
https://www.codeproject.com/Articles/43305/Tracing-SQL-Queries-in-Real-Time-for-MySQL-Databas As ...
- andriod inputbox
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...
- Android内存优化3 了解java GC 垃圾回收机制1
开篇废话 如果我们想要进行内存优化的工作,还是需要了解一下,但这一块的知识属于纯理论的,有可能看起来会有点枯燥,我尽量把这一篇的内容按照一定的逻辑来走一遍.首先,我们为什么要学习垃圾回收的机制,我大概 ...
- Shell合并两个文件成一个文件的两列paste,awk
Shell合并两个文件成一个文件的两列 发布时间:2014-07-20 编辑:www.jquerycn.cn Shell合并两个文件成一个文件的两列,提供了两种方法,普通shell脚本,awk脚本 ...
- BrowserSync-多浏览器测试工具
阅读目录 自动刷新 介绍BrowserSync BrowserSync具体使用 BrowserSync配合gulp 自动刷新 自动刷新,顾名思义,就是不用我们去F5刷新.假设有一天我们写代码,只需要c ...
- MYSQL LIMIT 用法详解
在mysql的limit用法中,网上有这样的论述: "//为了检索从某一个偏移量到记录集的结束所有的记录行,可以指定第二个参数为 -1: mysql>SELECT * FROM tab ...
- Mapreduce 测试自带实例 wordcount
2.7.3版本的hadoop: jar程序所在目录:$HADOOP_HOME/shar/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar 1.本 ...
- [Webpack] Detect Unused Code with Webpack and unused-files-webpack-plugin
As you refactor and modify applications, it's difficult to manage and keep track of files as they be ...