From 2d2f1ee2dd3cc4dc00735fc25d87064adbd10231 Mon Sep 17 00:00:00 2001
From: Administrator <123>
Date: Wed, 03 Nov 2021 02:44:42 +0000
Subject: [PATCH] 首页 UI调整

---
 app/src/main/java/com/duqing/missions/base/BaseActivity.java |   77 +++++++++++++++++++++++++++++++++++++-
 1 files changed, 75 insertions(+), 2 deletions(-)

diff --git a/app/src/main/java/com/duqing/missions/base/BaseActivity.java b/app/src/main/java/com/duqing/missions/base/BaseActivity.java
index ef14ad3..3d37b2c 100644
--- a/app/src/main/java/com/duqing/missions/base/BaseActivity.java
+++ b/app/src/main/java/com/duqing/missions/base/BaseActivity.java
@@ -14,17 +14,22 @@
 import android.provider.Settings;
 import android.util.Log;
 import android.view.LayoutInflater;
+import android.view.MotionEvent;
 import android.view.View;
 import android.view.WindowManager;
+import android.view.inputmethod.InputMethodManager;
+import android.widget.EditText;
 import android.widget.Toast;
 
 import androidx.annotation.ColorRes;
 import androidx.annotation.Nullable;
+import androidx.annotation.StringRes;
 import androidx.appcompat.app.AppCompatActivity;
 import androidx.core.content.FileProvider;
 import androidx.viewbinding.ViewBinding;
 
 import com.duqing.missions.MyApplication;
+import com.duqing.missions.R;
 import com.duqing.missions.data.ApkUpGradeResult;
 import com.duqing.missions.util.MyLog;
 import com.duqing.missions.util.ResPonse;
@@ -99,6 +104,8 @@
     protected void onCreate(@Nullable Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         // get genericity "B"
+        setStatusBarBgColor(R.color.white);
+        setStatusBarTextColor(true);
         Class<B> entityClass = (Class<B>) ((ParameterizedType) this.getClass().getGenericSuperclass()).getActualTypeArguments()[0];
         try {
             Method method = entityClass.getMethod("inflate", LayoutInflater.class);//get method from name "inflate";
@@ -114,7 +121,10 @@
         } catch (Exception e) {
         }
         TAG = this.getClass().getSimpleName();
+        initViews();
     }
+
+    public abstract void initViews();
 
 
     public void setStatusBarTransparent(boolean isBlack){
@@ -140,9 +150,9 @@
     public void setStatusBarTextColor(boolean isBlack){
         View decor = getWindow().getDecorView();
         if (isBlack) {
-            decor.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
+            decor.setSystemUiVisibility( View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
         } else {
-            decor.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
+            decor.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
         }
     }
 
@@ -164,6 +174,62 @@
 
     }
 
+    @Override
+    public boolean dispatchTouchEvent(MotionEvent ev) {
+        if (ev.getAction() == MotionEvent.ACTION_DOWN) {  //把操作放在用户点击的时候
+            View v = getCurrentFocus();      //得到当前页面的焦点,ps:有输入框的页面焦点一般会被输入框占据
+            if (isShouldHideKeyboard(v, ev)) { //判断用户点击的是否是输入框以外的区域
+                hideSoftKeyboard ();   //收起键盘
+            }
+        }
+        return super.dispatchTouchEvent(ev);
+    }
+
+    /**
+     * 根据EditText所在坐标和用户点击的坐标相对比,来判断是否隐藏键盘,因为当用户点击EditText时则不能隐藏
+     *
+     * @param v
+     * @param event
+     * @return
+     */
+    private boolean isShouldHideKeyboard(View v, MotionEvent event) {
+        if (v != null && (v instanceof EditText)) {  //判断得到的焦点控件是否包含EditText
+            int[] l = {0, 0};
+            v.getLocationInWindow(l);
+            int left = l[0],    //得到输入框在屏幕中上下左右的位置
+                    top = l[1],
+                    bottom = top + v.getHeight(),
+                    right = left + v.getWidth();
+            if (event.getX() > left && event.getX() < right
+                    && event.getY() > top && event.getY() < bottom) {
+                // 点击位置如果是EditText的区域,忽略它,不收起键盘。
+                return false;
+            } else {
+                return true;
+            }
+        }
+        // 如果焦点不是EditText则忽略
+        return false;
+    }
+    /**
+     * 判断软键盘输入法是否弹出
+     */
+    public boolean isKeyboardVisbility(Context context, View v) {
+        InputMethodManager imm = (InputMethodManager) context.getSystemService(context.INPUT_METHOD_SERVICE);
+        if (imm.hideSoftInputFromWindow(v.getWindowToken(), 0)) {
+            imm.showSoftInput(v, 0);
+            return true;//键盘显示中
+        } else {
+            return false;//键盘未显示
+        }
+    }
+    protected void hideSoftKeyboard() {
+        if (getWindow().getAttributes().softInputMode != WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN) {
+            if (getCurrentFocus() != null)
+                ((InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE)).hideSoftInputFromWindow(getCurrentFocus().getWindowToken(),
+                        InputMethodManager.HIDE_NOT_ALWAYS);
+        }
+    }
     /**
      * 状态栏高度
      * @return
@@ -193,6 +259,13 @@
             //quitApp();
         }
     }
+    public void showToast(String message){
+        Toast.makeText(this,message,Toast.LENGTH_SHORT).show();
+    }
+
+    public void showToast(@StringRes int msg){
+        showToast(getString(msg));
+    }
     ApkUpGradeResult.AppInfo apkUpGrade;
     ProgressDialog progressDialog ;
 

--
Gitblit v1.9.1