package com.basic.security.utils;
|
|
import android.annotation.TargetApi;
|
import android.app.Activity;
|
import android.content.Context;
|
import android.graphics.Rect;
|
import android.os.Build;
|
import android.util.DisplayMetrics;
|
import android.view.View;
|
import android.view.ViewGroup;
|
import android.view.inputmethod.InputMethodManager;
|
import android.widget.EditText;
|
|
import com.basic.security.base.BaseApplication;
|
|
public class KeyboardUtil {
|
public static void setupUI(View view) {
|
if (!(view instanceof EditText)) {
|
view.setOnTouchListener((v, event) -> {
|
KeyboardUtil.hideSoftKeyboard();
|
return false;
|
});
|
}
|
if (view instanceof ViewGroup) {
|
for (int i = 0; i < ((ViewGroup) view).getChildCount(); i++) {
|
View innerView = ((ViewGroup) view).getChildAt(i);
|
setupUI(innerView);
|
}
|
}
|
}
|
|
public static void hideSoftKeyboard() {
|
Activity activity = BaseApplication.getApplication().activity;
|
InputMethodManager inputMethodManager =
|
(InputMethodManager) activity.getSystemService(
|
Activity.INPUT_METHOD_SERVICE);
|
View view = activity.getCurrentFocus();
|
if (view != null) {
|
inputMethodManager.hideSoftInputFromWindow(
|
view.getWindowToken(), 0);
|
}
|
}
|
|
public static void showKeyboard() {
|
InputMethodManager imm = (InputMethodManager) BaseApplication.getApplication().activity.getSystemService(Context.INPUT_METHOD_SERVICE);
|
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
|
}
|
|
public static boolean isSoftShowing(Activity activity) {
|
int screenHeight = activity.getWindow().getDecorView().getHeight();
|
Rect rect = new Rect();
|
activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(rect);
|
return screenHeight * 2 / 3 > rect.bottom + getSoftButtonsBarHeight(activity);
|
}
|
|
@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
|
private static int getSoftButtonsBarHeight(Activity activity) {
|
DisplayMetrics metrics = new DisplayMetrics();
|
activity.getWindowManager().getDefaultDisplay().getMetrics(metrics);
|
int usableHeight = metrics.heightPixels;
|
activity.getWindowManager().getDefaultDisplay().getRealMetrics(metrics);
|
int realHeight = metrics.heightPixels;
|
if (realHeight > usableHeight) {
|
return realHeight - usableHeight;
|
} else {
|
return 0;
|
}
|
}
|
}
|