1. 程式人生 > >Android 3分鐘整合右滑退出

Android 3分鐘整合右滑退出

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

    本文已同步更新至 簡書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