Android实现类似IOS右滑返回的效果(原因分析及解决办法)
使用类库SwipeBackLayout
https://github.com/Issacw0ng/SwipeBackLayout
出现的问题:
1. 主Activity返回时黑屏或者返回只是看到桌面背景而没有看到上一个Activity界面
原因:
使用滑动返回需要在Activity的额主题中声明android:windowIsTranslucent=true,而该属性是设置Activity为是否为透明主题,当主Activity采用透明主题时,由于是app Activity栈中的第一个,所以滑动返回时会看到桌面或是黑屏
解决:
主Activity不要打开滑动返回功能(本身也不需要),只在需要滑动返回的Activity使用,可以定义下面的主题,根据需要给不同的Activity设置主题:
<style name="BaseTheme" parent="@android:style/Theme.Holo.Light"> <item name="android:windowIsTranslucent">true</item> </style> <style name="MainTheme" parent="@android:style/Theme.Holo.Light"> <item name="android:windowIsTranslucent">false</item> </style>
2.另外一个问题发生在Activity切换时其生命周期上:
当用户打开新的Activity或是切换到桌面时,回调如下:onPause->onStop.
这里有一种特殊情况,如新Activity采用了透明主题,那么当前Activity不会回调onStop
有些时候需要在onStop里面做一些处理,如果使用了透明主题则不会调用,一个替代方案是在onPause里面去执行,当然得注意的是无论是在onStop或是在onPause里面,都不能执行太耗时的操作,否则会影响新Activity的启动
以上所述是小编给大家介绍的Android实现类似IOS右滑返回的效果(原因分析及解决办法),希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!
相关推荐
-
Android右滑返回上一个界面的实现方法
Android右滑返回上一个界面的实现方法 public class BaseActivity extends Activity implements OnTouchListener { public ProgressDialog progressDialog; public String states; public RequestQueue mQueue; /** 触摸时按下的点 **/ PointF downP = new PointF(); /** 触摸时当前的点 **/ PointF
-
Android仿微信右滑返回功能的实例代码
先上效果图,如下: 先分析一下功能的主要技术点,右滑即手势判断,当滑到一直距离时才执行返回,并且手指按下的位置是在屏幕的最左边(这个也是有一定范围的), 这些可以实现onTouchEvent来实现. 接着就是返回时,有滑动效果,很显然这个是Acitivty切换动画实现的.好啦,分析完了就开干.下面上代码: @Override public boolean onTouchEvent(MotionEvent event) { switch (event.getAction()){ case Mot
-
android 右滑返回的示例代码
类似于微信的右滑返回,在BaseActivity里利用dispatchTouchEvent()拦截右滑动作,利用setTranslationX()实现动画,在DecorView里添加View作为滑动时的左侧阴影. 渐进步骤: 设置activity背景透明 重写finish()等方法设置activity的跳转动画 重写dispatchTouchEvent()拦截 所需要 右滑动作 重写onTouchEvent()给根布局设置偏移量 添加滑动时上层activity的左侧阴影 滑动时关联下层activ
-
Android中SwipeBack实现右滑返回效果
现在有很多App支持右滑返回,比如知乎,效果比较赞. 于是自己对Activity和Fragment进行了继承,派生出SwipeBackActivity和SwipeBackFragment,用于对这种效果的实现,也就是只要继承这两个类就可以了. 效果如下 Activity Fragment Frgament的效果实现比Activity稍微简单,因为Activity要考虑到dectorView. 支持滑动的控件SwipeLayout,核心思路就是把原有的控件添加到支持滑动的控件中,SwipeLayo
-
Android实现类似IOS右滑返回的效果(原因分析及解决办法)
使用类库SwipeBackLayout https://github.com/Issacw0ng/SwipeBackLayout 出现的问题: 1. 主Activity返回时黑屏或者返回只是看到桌面背景而没有看到上一个Activity界面 原因: 使用滑动返回需要在Activity的额主题中声明android:windowIsTranslucent=true,而该属性是设置Activity为是否为透明主题,当主Activity采用透明主题时,由于是app Activity栈中的第一个,所以滑动返
-
JavaScript中的ParseInt("08")和“09”返回0的原因分析及解决办法
今天在程序中出现一个bugger ,调试了好久,最后才发现,原来是这个问题. 做了一个实验: alert(parseInt("01")),当这个里面的值为01====>07时都是正常的,但是在"08","09"就会返回0 (这种现象出现在ie内核的浏览器中,如360浏览器就会出现这种错误)(谷歌,火狐不受影响) . 查阅资料得知着这种现象原因: 大神的解释: 01--07自然没有问题,但是09,08都是不合格的八进制形式,所以被按照0处理了
-
iOS禁用右滑返回的两种方法
本文实例为大家分享了iOS禁用右滑返回的具体代码,供大家参考,具体内容如下 方式一: 前提:如果使用的自定义UINavigationController基类,请不要在此基类里写相关的手势操作方法. 代码如下: -(void)viewDidAppear:(BOOL)animated{ if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) { self.naviga
-
Android中EditText+Button组合导致输入板无法收起的原因分析及解决办法
在Android开发中,录入信息是最基本的操作,使用非常广泛. 但是Android对输入法弹出/收起的支持,并不是很好. 对弹出,提供了force方式和implicit方式,对输入却没有提供force方式. 可想而知,想弹能弹,想收不能收,这是多么的痛苦! 没有对输入法做任何处理的情况下,EditText输入后,点击Button一般会自动收起输入法. 若没有收起,那可能是布局上有一些问题,可以尝试在最外层添加scrollView. 笔者亲测在大部分情况下,嵌套scrollView是可行的. 如果
-
Android中Memory Leak原因分析及解决办法
在Android开发过程中,我们经常碰到的情况就是在我们不清楚为什么情况下,程序突然出现Crash了.其中有一类日志相信大家都经常碰到过,这类日志就是OOM相关的日志.这类日志除了我们知道的Bitmap操作的时候会经常导致,还有一种隐藏的较深的原因就是内存泄露(Memory Leak). 内存泄露产生原因和影响: 原因:当一个Object不再需要的时候,本该被GC回收时,但是因为另一个正在使用的Object持有它导致不能正常的被回收,本该被回收的对象不能回收,还存留在堆内存中,此时就产生了内存泄
-
Android 关于“NetworkOnMainThreadException”问题的原因分析及解决办法
网络收集的原因如下,以及解决办法: 我补充总结一下: 解决办法一: 在操作网络类(socket连接)的activity的protected void onCreate(Bundle savedInstanceState)函数后面加上下面的代码.在super.onCreate(savedInstanceState);前面加. StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder() .detectDiskReads().det
-
Android 实现右滑返回功能
前言 右滑返回这个功能好像在iOS上蛮实用的,因为它的返回键在左上角,右手握持手机就得穿越整个屏幕去按它,不过对于大屏Android手机也是蛮实用的,右下角的返回键随着屏占比的增大按起来的难度也不小,就算有mBack这样的交互,多一个右滑返回也是极好的是吧? 上代码 SwipBackDemo 上效果图 SlidingPaneLayout 这个东西是Support V4中早就存在的,同样是侧滑,远没有侧滑菜单android.support.v4.widget.DrawerLayout被熟知,这玩意
-
iOS app 右滑返回操作的两种方法
前提条件,存在A和B两个页面,A是主界面,A push 到 B 方法一:如果B页面的返回按钮要用自定义的按钮(在iOS7中,如果使用了UINavigationController,那么系统自带的附加了一个从屏幕左边缘开始滑动可以实现pop的手势.但是,如果自定义了navigationItem的leftBarButtonItem,那么这个手势就会失效.) 在A界面: - (void)viewDidAppear:(BOOL)animated { self.navigationController.i
随机推荐
- 正则表达式中特殊符号及正则表达式的几种方法总结(replace,test,search)
- MySQL下将一个表的数据插入到另外一个表的实现语句
- VBS利用SendKeys输入中文字符的方法
- 在windows10上安装mysql详细图文教程
- 浅谈angular4生命周期钩子
- js toFixed()方法的重写实现精度的统一
- java基本教程之java线程等待与java唤醒线程 java多线程教程
- Oracle数据库opatch补丁操作流程
- 微信小程序 点击控件后选中其它反选实例详解
- 在Apache环境下成功的运行ASP.NET的注意事项
- php 购物车完整实现代码
- PHP数组的基本操作及遍历数组的经典操作实例
- php验证身份证号码正确性的函数
- linux安装全中文管理面板教程(php+mysql)
- 基于mysql多实例安装的深入解析
- 关于PHP实现异步操作的研究
- Android通过滑动实现Activity跳转(手势识别器应用)
- 利用js判断手机是否安装某个app的多种方案
- Android 兼容性问题:java.lang.UnsupportedOperationException解决办法
- 浅谈Ajax相关及其优缺点