二.本篇采用第三方控件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">falseitem>
找不到位置的朋友可以参考下图:
5.为需要滑动退出的activity的style样式中,添加如下代码:
<item name="android:windowIsTranslucent">trueitem>
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);
/**
*
* 为某个控件设置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;
}
二.本篇采用第三方控件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">falseitem>
找不到位置的朋友可以参考下图:
5.为需要滑动退出的activity的style样式中,添加如下代码:
<item name="android:windowIsTranslucent">trueitem>
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);
/**
*
* 为某个控件设置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;
}