a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 系統(tǒng) > Android > 正文

Android實現(xiàn)側(cè)滑只需一步

2019-10-21 21:31:02
字體:
供稿:網(wǎng)友

先解釋一下這個標(biāo)題,說的是實現(xiàn)App側(cè)滑返回功能只需要一行代碼就能搞定,怎么做到的我待會會說。側(cè)滑所指的就是側(cè)滑返回,后面的介紹過程我將用側(cè)滑表面其意。請看側(cè)滑效果如下圖:

Android,側(cè)滑

Github地址:0侵入側(cè)滑返回

使用

在 Application 初始化

SwipeBackHelper.init(this); // 就這一步操作

本篇不打算長篇大論解釋原理,只想跟大家說一下我的思考。

筆者的項目中也有側(cè)滑返回功能,和很多側(cè)滑的開源項目一樣,需要繼承swipeBackActivity基類,實現(xiàn)控制側(cè)滑返回方法。我覺得這是比較乏味的。而且很多側(cè)滑框架需要使用透明主題true(默認(rèn)為false)

<item name="android:windowIsTranslucent">true</item>

這個屬性在實際應(yīng)用中是純在問題的它會引起一系列的動畫問題,如前后臺切換動畫、Activity回退動畫等。還有個值得注意的是在界面跳轉(zhuǎn)的時候,發(fā)起跳轉(zhuǎn)的Activity只會執(zhí)行onPause方法,而不會執(zhí)行onStop方法。

于是乎我決定改變這個局面,在這個過程中我有三個方面的考慮:對項目傾入性,高地版本手機(jī)適配性,主題兼容性。要抓好這三個點,這是我的目的。下面我就這三個方向具細(xì)的說

傾入性

能不能做到不改動Activity的就能使它擁有側(cè)滑的能力?答案是肯定的。這里我用到了ActivityLifeCallbacks技術(shù),需要API 14+ 在onActivityCreated函數(shù)里面動態(tài)的把側(cè)滑控件植入到布局最頂級,替換之前的將初始化側(cè)滑代碼寫在Activity里方式。并且動態(tài)的判斷是否第二個入棧的Activity如果是再植入。因為第一個啟動的Activity是不需要側(cè)滑的,比如我們的首頁界面。

適配性

在適配性方面我希望在高低版本的手機(jī)當(dāng)中側(cè)滑效果是一樣的,不會出現(xiàn)閃一下的情況

改寫swipeBack的時候,遇到在高版本的手機(jī)當(dāng)中側(cè)滑結(jié)束的時候有幾率會閃一下,這讓我很是頭疼不過也得解決啊。于是我找了其他測滑庫也試試看,我發(fā)現(xiàn)一部分也有相同的問題,一部分沒有。于是我進(jìn)一步分析那些不會閃一下的側(cè)滑庫,發(fā)現(xiàn)他們它們都有一個共同點,就是必須使用透明主題。這種強(qiáng)制要求對于我來說是不接受的,我一定要解決這個痛點。為什么會閃一下?其實很簡單,因為側(cè)滑結(jié)束的時候Activity finish會有一個退出動畫,所以你會看到閃一下的場景。那我們就把退出動畫"取消吧",于是我將退出動畫設(shè)置成如下:

<set xmlns:android="http://schemas.android.com/apk/res/android"  android:interpolator="@android:interpolator/decelerate_quad"></set>

ps:這個動畫我是從系統(tǒng)anim里面當(dāng)中找出來的

做了以上改動之后發(fā)現(xiàn)并沒有徹底解決,雖然閃一下的幾率是大大降低了。左四右想我想我用到另外一種方式。我在dispatchDraw中將前一個activity界面中的DecorView繪制到當(dāng)前activity中的畫布上,因為dispatchDraw()方法先執(zhí)行,那么它就會將activity A中的DecorView繪制到當(dāng)前activity B界面上。接著B進(jìn)入onPause,此時界面上仍然顯示的是B的內(nèi)容。再接著進(jìn)入A onStart,此時系統(tǒng)準(zhǔn)備A的界面,將A中的DecorView重新繪制到當(dāng)前A界面中。下來進(jìn)入A onResume,此時屏幕上顯示A的界面,同時隱藏B的界面。因為A界面和B界面是同樣的內(nèi)容,所以屏幕的顯示不會有切換效果

兼容性

在兼容性方面我希望做到兼容透明主題與非透明主題。

因為這個兩個選項在每個項目中都是不固定的,不統(tǒng)一的。不能因為使用了SwipeBack就要改變他,這是不太友好的。應(yīng)該更好的對待它們,兼容它們。處理這一點我用到了反射技術(shù)。反射Activity的convertFromTranslucent方法將透明主題轉(zhuǎn)為不透明兼容兩者。

總結(jié)

以上就是我今天和大家分享的Android側(cè)滑Lib,已經(jīng)使用到我的項目中。

Github地址:0侵入側(cè)滑返回

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持VEVB武林網(wǎng)。


注:相關(guān)教程知識閱讀請移步到Android開發(fā)頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 婷婷免费在线观看 | 久久精品一区 | 久久这里有精品 | 中文在线一区 | 成人中文字幕在线 | 日韩av成人| www.com91| 欧美一区二区久久久 | 99精品国产热久久91蜜凸 | cao视频| 国产男女爽爽爽免费视频 | 成人高清视频免费观看 | 免费在线一区二区三区 | 日本在线观看网站 | 国产欧美精品一区二区三区 | 视频1区2区| 九九亚洲| 国产精品美女久久久久aⅴ国产馆 | 欧美一区二区三区 | www.成人在线视频 | av日韩在线播放 | 爱爱视频网站 | 国产成人av在线 | 日本a在线| 黄视频国产 | 日韩综合网 | 天天干国产 | 欧美日韩精品一区二区 | 日本99精品| 欧美一区 | 亚洲精品免费在线 | 狠狠爱www人成狠狠爱综合网 | 一本色道久久综合亚洲精品不卡 | 亚洲一区中文字幕在线观看 | 精品一区二区三区免费 | 亚洲精品午夜aaa久久久 | 久久久大 | 一区二区三区四区日韩 | 国产在线一区二区三区 | 日韩性视频 | 日韩国产欧美一区二区 |