一.轟隆一聲靂響,小編閃亮登場。

實(shí)例.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屬性所對應(yīng)的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.與狀態(tài)欄顏色沖突的解決方案:
A.為每個根Activity設(shè)置背景色,此時設(shè)置的背景色即為狀態(tài)欄顏色。
再用單獨(dú)的一個Layout包裹所有布局作為次根布局,單獨(dú)設(shè)置你需要的背景色即可。
8.與沉浸式狀態(tài)欄沖突的解決方案:
A.在根布局下添加一個填充作用的View,代碼設(shè)置相當(dāng)于狀態(tài)欄高度的margin值即可。
B.參考代碼如下(MyUtils為個人工具類,具體方法可往下翻。):
//獲取狀態(tài)欄高度
int statusBarHeight = MyUtils.getStatusBarHeight(this);
//設(shè)置margin值
MyUtils.setMargins(vVenuesFull, 0, statusBarHeight, 0, 0);

image.png
/**
*
* 為某個控件設(shè)置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();
}
}
/**
* 獲取系統(tǒng)狀態(tài)欄高度
* @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;
}
三.參考自https://blog.csdn.net/u013231041/article/details/52816500
四.隨手分享,喜歡的朋友可以關(guān)注微信公眾號MiHomes,后續(xù)會有更多更好的博客推送給您。
另:歡迎指出不足,會進(jìn)行更正
末尾:移動互聯(lián)&人力資源交流群,可加微信zy666128入群交流。

image.png