版權(quán)聲明:轉(zhuǎn)載必須注明本文轉(zhuǎn)自黃淑媛的博客: http://blog.csdn.net/imshuyuan
我的簡書:三句話實現(xiàn):Activity 側(cè)滑退出,不信你來看看佳头?
現(xiàn)在很多應用都有左滑退出的功能氨鹏,比如:微信
網(wǎng)上也好多例子颜屠,找到一種方法最小代價修改原來的代碼辰妙,一般開發(fā)都會封裝一個BaseActiviy 作為基類使用,
最簡單的就是在上面改代價最小甫窟。
一種:自己寫(想要研究原理 的可以去寫寫),
參考:
Activity右滑返回的實現(xiàn)
[android]手把手通過一個類實現(xiàn)側(cè)滑退出activity功能
二種:找個庫直接繼承(當然采用這種啦密浑,比較懶 ……)
GitHub:
https://github.com/ikew0ng/SwipeBackLayout
https://github.com/SilenceDut/NBAPlus
SwipeBackLayout 使用
添加依賴
compile ‘me.imid.swipebacklayout.lib:library:1.0.0’
基類繼承:
一般Activity其他用法都正常使用就行,無需修改
public class BaseActivity extends SwipeBackActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
注意事項
這個一定要寫在APP的 style主題中添加,原理左滑要看到上個頁面粗井,不設置透明無法實現(xiàn)
<!-- 解決activity切換時的黑屏問題 -->
<item name="android:windowIsTranslucent">true</item>
其他用法
1尔破、如果想要某個Activity不需要這樣的街图,可以有以下設置(比如MainActivity,你懂得)
//禁用滑動
setSwipeBackEnable(false);
2懒构、如果Activity沒有設置默認回退動畫餐济,(我的自己寫過樣式了,可以不用)痴脾,添加如下:
/**
* 當按下返回鍵時
*/
@Override
public void onBackPressed() {
scrollToFinishActivity();//左滑退出activity
}
3颤介、添加混淆(僅供參考)
#SwipeBackLayout
-dontwarn me.imid.swipebacklayout.lib.**
-keep class me.imid.swipebacklayout.lib.**{*;}
4、解決滑動返回上一個Activity出現(xiàn)桌面的bug單獨為主界面Activity設置以下屬性
(網(wǎng)上找的赞赖,不知道有沒有用滚朵,不過我的程序沒有這個bug,,僅供參考)
<item name="android:windowIsTranslucent">false</item>
5前域、方向設置
拿到 SwipeBackLayout,然后設置方向
mSwipeBackLayout = getSwipeBackLayout();
mSwipeBackLayout.setEdgeTrackingEnabled(SwipeBackLayout.EDGE_LEFT);
方向有四個選項:
SwipeBackLayout.EDGE_LEFT ---------------------------------------左邊滑出
SwipeBackLayout.EDGE_RIGHT ------------------------------------- 右邊滑出
SwipeBackLayout.EDGE_BOTTOM ----------------------------------底部滑出
SwipeBackLayout.EDGE_ALL ---------------------------------------- 上述都支持
6辕近、當使用SwipeBackLayout 之后,Activity 生命周期會有影響
onRestart方法不會走
目前想到的解決辦法是在 onRsume 中做判斷匿垄,當?shù)诙芜M入到該頁面屬于重啟移宅。從而實現(xiàn)重啟的功能。(僅供參考)
屬于笨方法椿疗。希望某位大神看看漏峰,能不能解決。
總結(jié):三句話實現(xiàn)
第一届榄,集成庫compile ‘me.imid.swipebacklayout.lib:library:1.0.0’
第二浅乔,baseActivity 繼承一個類……BaseActivity extends SwipeBackActivity
第三,style主題里面加一句話铝条, <item name="android:windowIsTranslucent">true</item>
趕快去試試吧靖苇,操作非常簡單_
參考:
android Activity右滑返回,退出當前activity
[android]手把手通過一個類實現(xiàn)側(cè)滑退出activity功能
Android版與微信Activity側(cè)滑后退效果完全相同的SwipeBackLayout