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右滑返回的效果(原因分析及解决办法),希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

时间: 2024-10-28 10:44:09

Android实现类似IOS右滑返回的效果(原因分析及解决办法)的相关文章

JavaScript中的ParseInt(&quot;08&quot;)和“09”返回0的原因分析及解决办法_javascript技巧

今天在程序中出现一个bugger ,调试了好久,最后才发现,原来是这个问题. 做了一个实验: alert(parseInt("01")),当这个里面的值为01====>07时都是正常的,但是在"08","09"就会返回0 (这种现象出现在ie内核的浏览器中,如360浏览器就会出现这种错误)(谷歌,火狐不受影响) . 查阅资料得知着这种现象原因: 大神的解释: 01--07自然没有问题,但是09,08都是不合格的八进制形式,所以被按照0处理了

ios 系统导航条,右滑 返回 没效果

问题描述 ios 系统导航条,右滑 返回 没效果 5C 使用的是系统导航条,设置了代理,还是没用,back item 和leftitem 都试过了也没用,两个都不设置,直接用系统导航条的返回也是没用,不知道为什么?系统是7以上的 解决方案 重新启动一下电脑就行了,我的也是这样 解决方案二: 没有代码看不到问题啊 解决方案三: 重新启动(????ω????) 解决方案四: 不方便上代码吗???? 解决方案五: 就是赶快上代码就是赶快上代码就是赶快上代码

ios 滑动返回-iOS 右滑返回时将上个界面的navgationbar带到了返回后的界面

问题描述 iOS 右滑返回时将上个界面的navgationbar带到了返回后的界面 用的系统的滑动返回,在滑动返回时遇到了这种情况, navigationItem也是自定义的 解决方案 解决方案二: 解决方案三: 系统的滑动返回是在navgationcontroller上实现的.所以返回后的页面会有nav

Android中SwipeBack实现右滑返回效果_Android

现在有很多App支持右滑返回,比如知乎,效果比较赞. 于是自己对Activity和Fragment进行了继承,派生出SwipeBackActivity和SwipeBackFragment,用于对这种效果的实现,也就是只要继承这两个类就可以了. 效果如下 Activity Fragment Frgament的效果实现比Activity稍微简单,因为Activity要考虑到dectorView. 支持滑动的控件SwipeLayout,核心思路就是把原有的控件添加到支持滑动的控件中,SwipeLayo

Android中SwipeBack实现右滑返回效果

现在有很多App支持右滑返回,比如知乎,效果比较赞. 于是自己对Activity和Fragment进行了继承,派生出SwipeBackActivity和SwipeBackFragment,用于对这种效果的实现,也就是只要继承这两个类就可以了. 效果如下 Activity Fragment Frgament的效果实现比Activity稍微简单,因为Activity要考虑到dectorView. 支持滑动的控件SwipeLayout,核心思路就是把原有的控件添加到支持滑动的控件中,SwipeLayo

Android实现SwipeBack(右滑退出)效果

效果演示 初始状态 滑动中状态 结束状态 这是目前实现在SegmentFault for Android v2.6中的效果. 一切一切的之前,感谢 ikew0ng/SwipeBackLayout 我使用这个库,并经过一些修改,支持了Android 4.0以上所有的版本. 我们来分析下SwipeBackLayout的源码 一些修改 我之前做过实验,碰到的最大问题是上层的Activity底下并不是透明的,因此看不见下层Activity的视图. 在SwipeBackLayout中采用的方案是使用一个叫

Android 关于“NetworkOnMainThreadException”问题的原因分析及解决办法_Android

网络收集的原因如下,以及解决办法: 我补充总结一下: 解决办法一: 在操作网络类(socket连接)的activity的protected void onCreate(Bundle savedInstanceState)函数后面加上下面的代码.在super.onCreate(savedInstanceState);前面加. StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder() .detectDiskReads().det

Android 关于“NetworkOnMainThreadException”问题的原因分析及解决办法

网络收集的原因如下,以及解决办法: 我补充总结一下: 解决办法一: 在操作网络类(socket连接)的activity的protected void onCreate(Bundle savedInstanceState)函数后面加上下面的代码.在super.onCreate(savedInstanceState);前面加. StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder() .detectDiskReads().det

Android右滑返回上一个界面的实现方法

Android右滑返回上一个界面的实现方法 public class BaseActivity extends Activity implements OnTouchListener { public ProgressDialog progressDialog; public String states; public RequestQueue mQueue; /** 触摸时按下的点 **/ PointF downP = new PointF(); /** 触摸时当前的点 **/ PointF