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); } }