Przeglądaj źródła

虚拟按键 遮挡bug修改

liujiangyao 7 lat temu
rodzic
commit
1d546ef3db

+ 7 - 0
app/src/main/java/com/kfzs/duanduan/ActMain.java

@@ -1,6 +1,7 @@
 package com.kfzs.duanduan;
 
 import android.annotation.SuppressLint;
+import android.app.Activity;
 import android.content.Intent;
 import android.graphics.Color;
 import android.os.Build;
@@ -11,6 +12,7 @@ import android.view.ViewGroup;
 import android.view.WindowManager;
 import android.widget.ImageView;
 import android.widget.LinearLayout;
+import android.widget.RelativeLayout;
 
 import com.kfzs.appstore.utils.restful.KFZSNetwork;
 import com.kfzs.duanduan.event.BigEvent;
@@ -22,6 +24,7 @@ import com.sheep.gamegroup.absBase.BaseActivity;
 import com.sheep.gamegroup.model.entity.Container;
 import com.sheep.gamegroup.util.UMConfigUtils;
 import com.sheep.jiuyan.samllsheep.R;
+import com.sheep.jiuyan.samllsheep.utils.G;
 import com.umeng.socialize.UMShareAPI;
 
 import org.greenrobot.eventbus.EventBus;
@@ -42,6 +45,8 @@ public class ActMain extends BaseActivity implements TabsHelper.ItemPosition {
 
     @BindView(R.id.other_container)
     LinearLayout other_container;
+    @BindView(R.id.main_layout)
+    RelativeLayout main_layout;
 
     public final static String INTENT_GAME_ID = "INTEN_GAME_ID";
 
@@ -107,6 +112,7 @@ public class ActMain extends BaseActivity implements TabsHelper.ItemPosition {
         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
             getWindow().setStatusBarColor(Color.TRANSPARENT);
             getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION	 | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
+            main_layout.setPadding(0, 0, 0, G.getHasVirtualKey(KFZSApp.actMain) -G.getNoHasVirtualKey(KFZSApp.actMain) );
         }
     }
 
@@ -116,6 +122,7 @@ public class ActMain extends BaseActivity implements TabsHelper.ItemPosition {
     private void setStatusVI() {
         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
             getWindow().setStatusBarColor(Color.parseColor("#29d6fd"));
+            main_layout.setPadding(0, 0, 0, G.getHasVirtualKey(KFZSApp.actMain) -G.getNoHasVirtualKey(KFZSApp.actMain) );
            //getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
         }
     }

+ 46 - 0
app/src/main/java/com/sheep/jiuyan/samllsheep/utils/G.java

@@ -1,7 +1,10 @@
 package com.sheep.jiuyan.samllsheep.utils;
 
+import android.app.Activity;
 import android.content.Context;
 import android.text.TextUtils;
+import android.util.DisplayMetrics;
+import android.view.Display;
 import android.view.Gravity;
 import android.view.ViewGroup;
 import android.widget.TextView;
@@ -12,6 +15,8 @@ import com.sheep.jiuyan.samllsheep.BuildConfig;
 import com.sheep.jiuyan.samllsheep.R;
 import com.sheep.jiuyan.samllsheep.SheepApp;
 
+import java.lang.reflect.Method;
+
 
 /**
  * Created by Dlg on 2015/6/17.
@@ -81,4 +86,45 @@ public class G {
             G.showToast(baseMessage.getMsg() + (BuildConfig.DEBUG ? "[" + baseMessage.getCode() + "]" : ""));
         }
     }
+    /**
+     * 获取底部虚拟键盘的高度
+     */
+    public static int getBottomKeyboardHeight(Activity activity){
+        int screenHeight =  G.HEIGHT;
+        DisplayMetrics dm = new DisplayMetrics();
+        activity.getWindowManager().getDefaultDisplay().getMetrics(dm);
+        int heightDifference = screenHeight - dm.heightPixels;
+        return heightDifference;
+    }
+    /**
+     * 通过反射,获取包含虚拟键的整体屏幕高度
+     *
+     * @return
+     */
+    public static int getHasVirtualKey(Activity activity) {
+        int dpi = 0;
+        Display display = activity.getWindowManager().getDefaultDisplay();
+        DisplayMetrics dm = new DisplayMetrics();
+        @SuppressWarnings("rawtypes")
+        Class c;
+        try {
+            c = Class.forName("android.view.Display");
+            @SuppressWarnings("unchecked")
+            Method method = c.getMethod("getRealMetrics", DisplayMetrics.class);
+            method.invoke(display, dm);
+            dpi = dm.heightPixels;
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return dpi;
+    }
+    /**
+     * 获取屏幕尺寸,但是不包括虚拟功能高度
+     *
+     * @return
+     */
+    public static int getNoHasVirtualKey(Activity activity) {
+        int height = activity.getWindowManager().getDefaultDisplay().getHeight();
+        return height;
+    }
 }

+ 1 - 0
app/src/main/res/layout/activity_main.xml

@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/main_layout"
     android:layout_width="match_parent"
     android:layout_height="match_parent">