package com.anthony.inputlayout.utils;
import android.app.Activity;
import android.app.Dialog;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.os.Handler;
import android.os.Looper;
import android.support.annotation.ColorRes;
import android.support.v4.graphics.drawable.DrawableCompat;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import android.widget.EditText;
public class Utils {
/**
* 键盘切换延时时间
*/
public static final int KEYBOARD_CHANGE_DELAY = 100;
private static Handler sHandler = new Handler(Looper.getMainLooper());
public static void runInThread(Runnable task) {
new Thread(task).start();
}
public static void runInUIThread(Runnable task) {
sHandler.post(task);
}
public static void runInUIThread(Runnable task, long delayMillis) {
sHandler.postDelayed(task, delayMillis);
}
/**
* 根据手机的分辨率从 dp 的单位 转成为 px(像素)
*/
public static int dip2px(Context context, float dpValue) {
final float scale = context.getResources().getDisplayMetrics().density;
return (int) (dpValue * scale + 0.5f);
}
public static Drawable tintDrawable(Context context, Drawable drawable, @ColorRes int color) {
if (drawable == null) {
return null;
}
final Drawable wrappedDrawable = DrawableCompat.wrap(drawable);
DrawableCompat.setTint(wrappedDrawable, context.getResources().getColor(color));
return wrappedDrawable;
}
/**
* 关闭activity中打开的键盘
*
* @param activity
*/
public static void closeKeyboard(Activity activity) {
if (activity == null) {
return;
}
View view = activity.getWindow().peekDecorView();
if (view != null) {
InputMethodManager inputMethodManager = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);
inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(), 0);
}
}
/**
* 关闭dialog中打开的键盘
*
* @param dialog
*/
public static void closeKeyboard(Dialog dialog) {
View view = dialog.getWindow().peekDecorView();
if (view != null) {
InputMethodManager inputMethodManager = (InputMethodManager) dialog.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(), 0);
}
}
/**
* 打开键盘
*
* @param editText
*/
public static void openKeyboard(final EditText editText) {
runInUIThread(new Runnable() {
@Override
public void run() {
editText.requestFocus();
editText.setSelection(editText.getText().toString().length());
InputMethodManager imm = (InputMethodManager) editText.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(editText, InputMethodManager.SHOW_FORCED);
}
}, 300);
}
}