成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Bamboy右滑關(guān)閉2.0,無需透明主題的右滑關(guān)閉(附源碼)

_Dreams / 1435人閱讀

摘要:右滑關(guān)閉簡介很多中都會有右滑關(guān)閉功能,尤其是在全面屏?xí)r代更顯得尤為重要,但是,禁止非全屏的使用透明主題,否則會引發(fā)這導(dǎo)致了體驗(yàn)最優(yōu)的右滑關(guān)閉方案則不能再使用,除非有微信那種黑科技。

SlidingShut 右滑關(guān)閉 簡介

很多APP中都會有右滑關(guān)閉功能,
尤其是在全面屏?xí)r代更顯得尤為重要,
但是,
Android 8.0禁止非全屏的Activity使用透明主題,
否則會引發(fā):

Only fullscreen opaque activities can request orientation

這導(dǎo)致了體驗(yàn)最優(yōu)的右滑關(guān)閉方案則不能再使用,
除非有微信那種黑科技。

手機(jī)QQ的右滑關(guān)閉雖然不需要透明主題,
但是沒有實(shí)時反饋,
體驗(yàn)巨差,
那么就沒有其他的選擇了嗎?

于是我總結(jié)了一下,
目前最多的有兩種右滑方案:

1、以微信為代表的透明方案
優(yōu)點(diǎn)1:  
界面移動跟隨手指,
實(shí)時反饋。

優(yōu)點(diǎn)2:
擬物化,
層級明確,
視覺體驗(yàn)好。
———————————
缺點(diǎn)1:
由于涉及到滑動速度,
要滑多快才會觸發(fā)關(guān)閉,
這閾值永遠(yuǎn)是個未知數(shù),
再加上使用右滑關(guān)閉的App越來越多,
每個App的這個閾值都不一樣,
無形中增加了關(guān)閉失敗的幾率
以及用戶的思考成本。

缺點(diǎn)2:
需要透明主題,
不僅有可能會擾亂上一個Activity的生命周期,
而且SDK 27中非全屏Activity不可用,
否側(cè)會crash。

2、以QQ為代表的滑動方向計算
優(yōu)點(diǎn):  
不需要透明主題
———————————
缺點(diǎn)1:
沒有任何反饋,
用戶無法知道當(dāng)前手勢是否可以觸發(fā)關(guān)閉,
誤觸率高。

缺點(diǎn)2:
反應(yīng)遲鈍,
由于需要手勢完成才能獲得完整手勢,
所以手指抬起后才會觸發(fā)關(guān)閉,
雖然微信也是抬起后關(guān)閉,
但是視覺上和心理上卻不存在此缺點(diǎn)。
不過有個稍優(yōu)點(diǎn)的方案,
實(shí)時計算手勢的,
反應(yīng)靈敏了許多,
但卻會增加誤觸幾率。

缺點(diǎn)3:
沒有層級感,
更不擬物化。

那么有沒有其他的方案,
既不需要透明主題,
又能實(shí)時反饋?

當(dāng)然,
既然我寫了這篇帖子,
那么當(dāng)然會給大家提供一種方案。

3:Bamboy右滑關(guān)閉方案
優(yōu)點(diǎn)1:  
不需要透明主題。

優(yōu)點(diǎn)2:
界面跟隨手指,
實(shí)時反饋,
會不會關(guān)閉用戶一目了然。

優(yōu)點(diǎn)3:
擬物化,
視覺體驗(yàn)好。
———————————
缺點(diǎn):
沒有微信的那種方案層級感強(qiáng)。

廢話不多說,
這就給大家展示一下效果吧:

一、抬起模式

顧名思義
滑動過程中圓環(huán)進(jìn)度條跟隨手指而充盈
當(dāng)圓環(huán)圓滿后
抬起手指后才會觸發(fā)finish();

想要使用抬起模式
調(diào)用以下代碼即可:

setUpFinish(true);  
(注:默認(rèn)為true,即默認(rèn)抬起模式)

二、即刻模式

與抬起模式相對應(yīng)
只要圓環(huán)圓滿就觸發(fā)finish();
相比來說
即刻模式更敏捷
但卻存在誤觸的情況
選擇適合自己的

想要使用抬起模式
調(diào)用以下代碼即可:

setUpFinish(false);  

三、兼容finish()被攔截的情況

當(dāng)Activity中finish()方法被攔截時
已經(jīng)移動的界面自動歸位
歸位后自動重新開啟右滑關(guān)閉

四、指定滑動View

看了上面幾個動圖
心細(xì)的朋友可能發(fā)現(xiàn)了
在界面移動時
Activity左上角出現(xiàn)了一個白條條
這是因?yàn)門itleBar的顏色和界面的顏色不一致導(dǎo)致的
雖說無傷大雅
但作為一個視覺主義的程序員
這個小細(xì)節(jié)也是要優(yōu)化的
所以我提供了只移動指定View功能
就是說不會整個界面都移動
你讓他動的才會動

想要指定滑動View
調(diào)用以下代碼即可:

setMoveView(rootView);  

五、圓環(huán)顏色自定義

不管是出于性能
還是出于可擴(kuò)展性
這個圓環(huán)進(jìn)度條是完全用Canvas畫出來的
所以顏色當(dāng)然是支持自定義的
比如界面背景色不是白色
而是主題色時

想要指定圓環(huán)顏色
調(diào)用以下代碼即可:

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

塵少老規(guī)矩,附源碼:
https://github.com/Bamboy1203...

也可以先掃碼下載apk安裝體驗(yàn):

同時歡迎加入技術(shù)探討QQ群:569614530

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/74174.html

相關(guān)文章

  • 左滑右滑的樂趣

    摘要:左滑右滑你不再是一個人無論你是一個程序猿還是一個程序媛,每天干的事除了還是,代碼不能解決的問題什么問題自己心里還沒點(diǎn)數(shù)嘛,探探能幫你解決。 左滑 右滑 你不再是一個人 無論你是一個程序猿還是一個程序媛,每天干的事除了coding還是coding,代碼不能解決的問題(什么問題自己心里還沒點(diǎn)abcd數(shù)嘛),探探能幫你解決。最近網(wǎng)上特流行一款交友軟件叫探探(據(jù)說是yp軟件)。作為探探曾經(jīng)的一...

    Muninn 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<