一.轟隆一聲靂響搜变,小編閃亮登場艘蹋。
二.本篇采用第三方控件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>
找不到位置的朋友可以參考下圖:
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設置背景色缭贡,此時設置的背景色即為狀態(tài)欄顏色。
再用單獨的一個Layout包裹所有布局作為次根布局辉懒,單獨設置你需要的背景色即可阳惹。
8.與沉浸式狀態(tài)欄沖突的解決方案:
A.在根布局下添加一個填充作用的View,代碼設置相當于狀態(tài)欄高度的margin值即可。
B.參考代碼如下(MyUtils為個人工具類眶俩,具體方法可往下翻莹汤。):
//獲取狀態(tài)欄高度
int statusBarHeight = MyUtils.getStatusBarHeight(this);
//設置margin值
MyUtils.setMargins(vVenuesFull, 0, statusBarHeight, 0, 0);
/**
*
* 為某個控件設置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
四.隨手分享,喜歡的朋友可以關注微信公眾號MiHomes颠印,后續(xù)會有更多更好的博客推送給您纲岭。
另:歡迎指出不足,會進行更正
末尾:移動互聯&人力資源交流群线罕,可加微信zy666128入群交流止潮。