摘要:右滑關閉簡介很多中都會有右滑關閉功能,尤其是在全面屏時代更顯得尤為重要,但是,禁止非全屏的使用透明主題,否則會引發(fā)這導致了體驗最優(yōu)的右滑關閉方案則不能再使用,除非有微信那種黑科技。
SlidingShut 右滑關閉 簡介
很多APP中都會有右滑關閉功能,
尤其是在全面屏時代更顯得尤為重要,
但是,
Android 8.0禁止非全屏的Activity使用透明主題,
否則會引發(fā):
Only fullscreen opaque activities can request orientation
這導致了體驗最優(yōu)的右滑關閉方案則不能再使用,
除非有微信那種黑科技。
手機QQ的右滑關閉雖然不需要透明主題,
但是沒有實時反饋,
體驗巨差,
那么就沒有其他的選擇了嗎?
于是我總結了一下,
目前最多的有兩種右滑方案:
優(yōu)點1:2、以QQ為代表的滑動方向計算
界面移動跟隨手指,
實時反饋。優(yōu)點2:
擬物化,
層級明確,
視覺體驗好。
———————————
缺點1:
由于涉及到滑動速度,
要滑多快才會觸發(fā)關閉,
這閾值永遠是個未知數,
再加上使用右滑關閉的App越來越多,
每個App的這個閾值都不一樣,
無形中增加了關閉失敗的幾率
以及用戶的思考成本。缺點2:
需要透明主題,
不僅有可能會擾亂上一個Activity的生命周期,
而且SDK 27中非全屏Activity不可用,
否側會crash。
優(yōu)點:
不需要透明主題
———————————
缺點1:
沒有任何反饋,
用戶無法知道當前手勢是否可以觸發(fā)關閉,
誤觸率高。缺點2:
反應遲鈍,
由于需要手勢完成才能獲得完整手勢,
所以手指抬起后才會觸發(fā)關閉,
雖然微信也是抬起后關閉,
但是視覺上和心理上卻不存在此缺點。
不過有個稍優(yōu)點的方案,
實時計算手勢的,
反應靈敏了許多,
但卻會增加誤觸幾率。缺點3:
沒有層級感,
更不擬物化。
那么有沒有其他的方案,
既不需要透明主題,
又能實時反饋?
當然,
既然我寫了這篇帖子,
那么當然會給大家提供一種方案。
優(yōu)點1:
不需要透明主題。優(yōu)點2:
界面跟隨手指,
實時反饋,
會不會關閉用戶一目了然。優(yōu)點3:
擬物化,
視覺體驗好。
———————————
缺點:
沒有微信的那種方案層級感強。
廢話不多說,
這就給大家展示一下效果吧:
顧名思義
滑動過程中圓環(huán)進度條跟隨手指而充盈
當圓環(huán)圓滿后
抬起手指后才會觸發(fā)finish();
想要使用抬起模式
調用以下代碼即可:
setUpFinish(true);
(注:默認為true,即默認抬起模式)二、即刻模式
與抬起模式相對應
只要圓環(huán)圓滿就觸發(fā)finish();
相比來說
即刻模式更敏捷
但卻存在誤觸的情況
選擇適合自己的
想要使用抬起模式
調用以下代碼即可:
setUpFinish(false);三、兼容finish()被攔截的情況
當Activity中finish()方法被攔截時
已經移動的界面自動歸位
歸位后自動重新開啟右滑關閉
看了上面幾個動圖
心細的朋友可能發(fā)現了
在界面移動時
Activity左上角出現了一個白條條
這是因為TitleBar的顏色和界面的顏色不一致導致的
雖說無傷大雅
但作為一個視覺主義的程序員
這個小細節(jié)也是要優(yōu)化的
所以我提供了只移動指定View功能
就是說不會整個界面都移動
你讓他動的才會動
想要指定滑動View
調用以下代碼即可:
setMoveView(rootView);五、圓環(huán)顏色自定義
不管是出于性能
還是出于可擴展性
這個圓環(huán)進度條是完全用Canvas畫出來的
所以顏色當然是支持自定義的
比如界面背景色不是白色
而是主題色時
想要指定圓環(huán)顏色
調用以下代碼即可:
int color = ContextCompat.getColor(context, R.color.white); setProgressColor(color);
塵少老規(guī)矩,附源碼:
https://github.com/Bamboy1203...
也可以先掃碼下載apk安裝體驗:
同時歡迎加入技術探討QQ群:569614530
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://www.ezyhdfw.cn/yun/74174.html
閱讀 3481·2021-11-12 10:36
閱讀 2829·2021-11-11 16:55
閱讀 3054·2021-09-27 13:36
閱讀 1679·2021-08-05 10:01
閱讀 3634·2019-08-30 15:55
閱讀 845·2019-08-30 13:01
閱讀 1965·2019-08-29 17:16
閱讀 2431·2019-08-29 16:40