资讯专栏INFORMATION COLUMN

Bamboy右滑关闭2.0,无需透明主题的右滑关闭(附源码)

_Dreams / 1310人阅读

摘要:右滑关闭简介很多中都会有右滑关闭功能,尤其是在全面屏时代更显得尤为重要,但是,禁止非全屏的使用透明主题,否则会引发这导致了体验最优的右滑关闭方案则不能再使用,除非有微信那种黑科技。

SlidingShut 右滑关闭 简介

很多APP中都会有右滑关闭功能,
尤其是在全面屏时代更显得尤为重要,
但是,
Android 8.0禁止非全屏的Activity使用透明主题,
否则会引发:

Only fullscreen opaque activities can request orientation

这导致了体验最优的右滑关闭方案则不能再使用,
除非有微信那种黑科技。

手机QQ的右滑关闭虽然不需要透明主题,
但是没有实时反馈,
体验巨差,
那么就没有其他的选择了吗?

于是我总结了一下,
目前最多的有两种右滑方案:

1、以微信为代表的透明方案
优点1:  
界面移动跟随手指,
实时反馈。

优点2:
拟物化,
层级明确,
视觉体验好。
———————————
缺点1:
由于涉及到滑动速度,
要滑多快才会触发关闭,
这阈值永远是个未知数,
再加上使用右滑关闭的App越来越多,
每个App的这个阈值都不一样,
无形中增加了关闭失败的几率
以及用户的思考成本。

缺点2:
需要透明主题,
不仅有可能会扰乱上一个Activity的生命周期,
而且SDK 27中非全屏Activity不可用,
否侧会crash。

2、以QQ为代表的滑动方向计算
优点:  
不需要透明主题
———————————
缺点1:
没有任何反馈,
用户无法知道当前手势是否可以触发关闭,
误触率高。

缺点2:
反应迟钝,
由于需要手势完成才能获得完整手势,
所以手指抬起后才会触发关闭,
虽然微信也是抬起后关闭,
但是视觉上和心理上却不存在此缺点。
不过有个稍优点的方案,
实时计算手势的,
反应灵敏了许多,
但却会增加误触几率。

缺点3:
没有层级感,
更不拟物化。

那么有没有其他的方案,
既不需要透明主题,
又能实时反馈?

当然,
既然我写了这篇帖子,
那么当然会给大家提供一种方案。

3:Bamboy右滑关闭方案
优点1:  
不需要透明主题。

优点2:
界面跟随手指,
实时反馈,
会不会关闭用户一目了然。

优点3:
拟物化,
视觉体验好。
———————————
缺点:
没有微信的那种方案层级感强。

废话不多说,
这就给大家展示一下效果吧:

一、抬起模式

顾名思义
滑动过程中圆环进度条跟随手指而充盈
当圆环圆满后
抬起手指后才会触发finish();

想要使用抬起模式
调用以下代码即可:

setUpFinish(true);  
(注:默认为true,即默认抬起模式)

二、即刻模式

与抬起模式相对应
只要圆环圆满就触发finish();
相比来说
即刻模式更敏捷
但却存在误触的情况
选择适合自己的

想要使用抬起模式
调用以下代码即可:

setUpFinish(false);  

三、兼容finish()被拦截的情况

当Activity中finish()方法被拦截时
已经移动的界面自动归位
归位后自动重新开启右滑关闭

四、指定滑动View

看了上面几个动图
心细的朋友可能发现了
在界面移动时
Activity左上角出现了一个白条条
这是因为TitleBar的颜色和界面的颜色不一致导致的
虽说无伤大雅
但作为一个视觉主义的程序员
这个小细节也是要优化的
所以我提供了只移动指定View功能
就是说不会整个界面都移动
你让他动的才会动

想要指定滑动View
调用以下代码即可:

setMoveView(rootView);  

五、圆环颜色自定义

不管是出于性能
还是出于可扩展性
这个圆环进度条是完全用Canvas画出来的
所以颜色当然是支持自定义的
比如界面背景色不是白色
而是主题色时

想要指定圆环颜色
调用以下代码即可:

int color = ContextCompat.getColor(context, R.color.white);  
setProgressColor(color);  

尘少老规矩,附源码:
https://github.com/Bamboy1203...

也可以先扫码下载apk安装体验:

同时欢迎加入技术探讨QQ群:569614530

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/74174.html

相关文章

  • Bamboy右滑关闭2.0无需透明主题右滑关闭(源码)

    摘要:右滑关闭简介很多中都会有右滑关闭功能,尤其是在全面屏时代更显得尤为重要,但是,禁止非全屏的使用透明主题,否则会引发这导致了体验最优的右滑关闭方案则不能再使用,除非有微信那种黑科技。 SlidingShut 右滑关闭 简介 很多APP中都会有右滑关闭功能, 尤其是在全面屏时代更显得尤为重要, 但是, Android 8.0禁止非全屏的Activity使用透明主题, 否则会引发:...

    马龙驹 评论0 收藏0
  • android一个右滑退出效果的实现

    摘要:首先,网上介绍相关右滑退出实现的文章相当多,本文只是我自己实现的一个记录。考虑到子可能是等自身有横向滑动属性的控件,可以对这些控件单独处理,或者开一个手动添加忽略右滑退出子的接口。 首先,网上介绍相关右滑退出实现的文章相当多,本文只是我自己实现的一个记录。 思路与分析 介绍: android上最出名的右滑退出库莫过于SwipeBackLayout,效果如下:showImg(https:...

    iOS122 评论0 收藏0
  • 使用SlidingPaneLayout 实现仿微信的滑动返回

    摘要:上周公司的项目改版要求加上一个右滑返回上一个界面于是就在网上找了一些开源库打算实现但是在使用的时候遇见了许多的问题试了两天用过等库都没成功然后在看见了使用来实现的一个滑动返回案例然后就看了看发现不错于是就使用了这个虽然上面链接里面已近写好啦上周,公司的项目改版要求加上一个右滑返回上一个界面,于是就在网上找了一些开源库打算实现.但是在使用的时候遇见了许多的问题.试了两天用过https://gi...

    番茄西红柿 评论0 收藏0
  • Android实现SwipeBack(右滑退出)效果

    摘要:效果演示初始状态滑动中状态结束状态这是目前实现在中的效果。在中采用的方案是使用一个叫的未公开的,再配合中把设置为,即可实现上层的背景为透明。使用这个回调进行一些是否可以滑动以及滑动距离的判定。实现这个效果就是这么简单欢迎关注我以及 效果演示 初始状态 showImg(https://segmentfault.com/img/bVmEJE); 滑动中状态 showImg(http...

    sixgo 评论0 收藏0
  • 左滑右滑的乐趣

    摘要:左滑右滑你不再是一个人无论你是一个程序猿还是一个程序媛,每天干的事除了还是,代码不能解决的问题什么问题自己心里还没点数嘛,探探能帮你解决。 左滑 右滑 你不再是一个人 无论你是一个程序猿还是一个程序媛,每天干的事除了coding还是coding,代码不能解决的问题(什么问题自己心里还没点abcd数嘛),探探能帮你解决。最近网上特流行一款交友软件叫探探(据说是yp软件)。作为探探曾经的一...

    Muninn 评论0 收藏0

发表评论

0条评论

_Dreams

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<