package com.jasonchen.microlang.smilepicker;
import android.app.Activity;
import android.content.Context;
import android.graphics.Rect;
import android.util.DisplayMetrics;
import android.view.Display;
import android.view.View;
import android.view.Window;
import android.view.inputmethod.InputMethodManager;
import com.jasonchen.microlang.debug.AppLogger;
import com.jasonchen.microlang.settings.SettingUtility;
import com.jasonchen.microlang.utils.GlobalContext;
import com.jasonchen.microlang.utils.ThemeUtility;
import com.jasonchen.microlang.utils.Utility;
/**
* jasonchen
* 2015/04/10
*/
public class SmileyPickerUtility {
public static void hideSoftInput(View paramEditText) {
((InputMethodManager) GlobalContext.getInstance().getSystemService(
Context.INPUT_METHOD_SERVICE)).hideSoftInputFromWindow(
paramEditText.getWindowToken(), 0);
}
public static void showKeyBoard(final View paramEditText) {
paramEditText.requestFocus();
paramEditText.post(new Runnable() {
@Override
public void run() {
((InputMethodManager) GlobalContext.getInstance()
.getSystemService(Context.INPUT_METHOD_SERVICE))
.showSoftInput(paramEditText, 0);
}
});
}
public static int getScreenHeight(Activity paramActivity) {
Display display = paramActivity.getWindowManager().getDefaultDisplay();
DisplayMetrics metrics = new DisplayMetrics();
display.getMetrics(metrics);
return metrics.heightPixels;
}
public static int getStatusBarHeight(Activity paramActivity) {
Rect localRect = new Rect();
paramActivity.getWindow().getDecorView()
.getWindowVisibleDisplayFrame(localRect);
return localRect.top;
}
public static int getActionBarHeight(Activity paramActivity) {
// test on samsung 9300 android 4.1.2, this value is 96px
// but on galaxy nexus android 4.2, this value is 146px
// statusbar height is 50px
// I guess 4.1 Window.ID_ANDROID_CONTENT contain statusbar
int contentViewTop = paramActivity.getWindow()
.findViewById(Window.ID_ANDROID_CONTENT).getTop();
AppLogger.e("contentViewTop=" + contentViewTop);
// return contentViewTop - getStatusBarHeight(paramActivity);
return ThemeUtility.getDimensionPixelSize(paramActivity,
android.R.attr.actionBarSize, Utility.dip2px(48));
}
// below status bar,include actionbar, above softkeyboard
public static int getAppHeight(Activity paramActivity) {
Rect localRect = new Rect();
paramActivity.getWindow().getDecorView()
.getWindowVisibleDisplayFrame(localRect);
return localRect.height();
}
// below actionbar, above softkeyboard
public static int getAppContentHeight(Activity paramActivity) {
return SmileyPickerUtility.getScreenHeight(paramActivity)
- SmileyPickerUtility.getStatusBarHeight(paramActivity)
- SmileyPickerUtility.getKeyboardHeight(paramActivity);
}
public static int getKeyboardHeight(Activity paramActivity) {
int height = SmileyPickerUtility.getScreenHeight(paramActivity)
- SmileyPickerUtility.getStatusBarHeight(paramActivity)
- SmileyPickerUtility.getAppHeight(paramActivity);
if (height == 0) {
height = SettingUtility.getDefaultSoftKeyBoardHeight();
}
SettingUtility.setDefaultSoftKeyBoardHeight(height);
return height;
}
public static boolean isKeyBoardShow(Activity paramActivity) {
int height = SmileyPickerUtility.getScreenHeight(paramActivity)
- SmileyPickerUtility.getStatusBarHeight(paramActivity)
- SmileyPickerUtility.getAppHeight(paramActivity);
return height != 0;
}
}