Преглед на файлове

Merge remote-tracking branch 'origin/master'

zengjiebin преди 7 години
родител
ревизия
1ac6dddb66
променени са 1 файла, в които са добавени 29 реда и са изтрити 1 реда
  1. 29 1
      app/src/main/java/com/kfzs/duanduan/utils/StatusBarUtils.java

+ 29 - 1
app/src/main/java/com/kfzs/duanduan/utils/StatusBarUtils.java

@@ -4,11 +4,13 @@ package com.kfzs.duanduan.utils;
 import android.annotation.TargetApi;
 import android.app.Activity;
 import android.content.Context;
+import android.content.res.Resources;
 import android.graphics.Color;
 import android.os.Build;
 import android.support.annotation.ColorInt;
 import android.support.design.widget.CoordinatorLayout;
 import android.support.v4.widget.DrawerLayout;
+import android.util.Log;
 import android.view.View;
 import android.view.ViewGroup;
 import android.view.WindowManager;
@@ -16,6 +18,8 @@ import android.widget.LinearLayout;
 
 import com.sheep.jiuyan.samllsheep.R;
 
+import java.lang.reflect.Method;
+
 public class StatusBarUtils {
 
     public static final int DEFAULT_STATUS_BAR_ALPHA = 112;
@@ -601,7 +605,8 @@ public class StatusBarUtils {
         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
             activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
             activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
-            activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
+            if (!isHaveNavigationBar(activity))
+                activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
             activity.getWindow().setStatusBarColor(Color.TRANSPARENT);
         } else {
             activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
@@ -657,4 +662,27 @@ public class StatusBarUtils {
         blue = (int) (blue * a + 0.5);
         return 0xff << 24 | red << 16 | green << 8 | blue;
     }
+
+    public static boolean isHaveNavigationBar(Activity context) {
+
+        boolean isHave = false;
+        Resources rs = context.getResources();
+        int id = rs.getIdentifier("config_showNavigationBar", "bool", "android");
+        if (id > 0) {
+            isHave = rs.getBoolean(id);
+        }
+        try {
+            Class systemPropertiesClass = Class.forName("android.os.SystemProperties");
+            Method m = systemPropertiesClass.getMethod("get", String.class);
+            String navBarOverride = (String) m.invoke(systemPropertiesClass, "qemu.hw.mainkeys");
+            if ("1".equals(navBarOverride)) {
+                isHave = false;
+            } else if ("0".equals(navBarOverride)) {
+                isHave = true;
+            }
+        } catch (Exception e) {
+            Log.w("TAG", e);
+        }
+        return isHave;
+    }
 }