Android 3分鐘整合右滑退出
阿新 • • 發佈:2019-02-05
一.轟隆一聲靂響,小編閃亮登場
本文已同步更新至 簡書https://www.jianshu.com/p/c50aee649af2。
例項.gif
二.本篇採用第三方控制元件swipebacklayout,整合步驟如下:
1.依賴 compile 'me.imid.swipebacklayout.lib:library:1.1.0'
2.基類BaseActivity繼承SwipeBackActivity
3.在不需要滑動的Activity中新增如下程式碼:
getSwipeBackLayout().setEnableGesture(false);//禁止右滑退出
4.在清單檔案( AndroidManifest )檔案中,為主Activity(就是主介面的activity 如MainActivity)的theme屬性所對應的style樣式中,新增如下程式碼:
<item name="android:windowIsTranslucent">false</item>
找不到位置的朋友可以參考下圖:
AndroidManifest檔案中.png
vaues資料夾下的styles檔案中.png
5.為需要滑動退出的activity的style樣式中,新增如下程式碼:
<item name="android:windowIsTranslucent">true</item>
6.到此為止,整合成功。需要新增混淆的朋友可以在混淆檔案中加入如下程式碼
#SwipeBackLayout
-dontwarn me.imid.swipebacklayout.lib.**
-keep class me.imid.swipebacklayout.lib.**{*;}
7.與狀態列顏色衝突的解決方案:
A.為每個根Activity設定背景色,此時設定的背景色即為狀態列顏色。
再用單獨的一個Layout包裹所有佈局作為次根佈局,單獨設定你需要的背景色即可。
8.與沉浸式狀態列衝突的解決方案:
A.在根佈局下新增一個填充作用的View,程式碼設定相當於狀態列高度的margin值即可。
B.參考程式碼如下(MyUtils為個人工具類,具體方法可往下翻。):
//獲取狀態列高度
int statusBarHeight = MyUtils.getStatusBarHeight(this );
//設定margin值
MyUtils.setMargins(vVenuesFull, 0, statusBarHeight, 0, 0);
image.png/**
*
* 為某個控制元件設定margin
* @param v
* @param left
* @param top
* @param right
* @param bottom
*/
public static void setMargins (View v, int left, int top, int right, int bottom) {
if (v.getLayoutParams() instanceof ViewGroup.MarginLayoutParams) {
ViewGroup.MarginLayoutParams p = (ViewGroup.MarginLayoutParams) v.getLayoutParams();
p.setMargins(left, top, right, bottom);
v.requestLayout();
}
}
/**
* 獲取系統狀態列高度
* @param context
* @return
*/
public static int getStatusBarHeight(Context context) {
int statusBarHeight = 0;
Resources res = context.getResources();
int resourceId = res.getIdentifier("status_bar_height", "dimen", "android");
if (resourceId > 0) {
statusBarHeight = res.getDimensionPixelSize(resourceId);
}
return statusBarHeight;
}
四.隨手分享,喜歡的朋友可以關注簡書號MiHomes,後續會有更多更好的部落格推送給您。
另:歡迎指出不足,會進行更正
末尾:移動互聯&人力資源交流群,可加微信zy666128入群交流。
image.png