package com.bczm.widgetcollections.utils;
import android.content.Context;
import android.content.Intent;
import android.content.res.ColorStateList;
import android.content.res.Resources;
import android.graphics.drawable.Drawable;
import android.os.*;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Toast;
import com.bczm.widgetcollections.ui.activity.BaseActivity;
import com.bczm.widgetcollections.BaseApplication;
public class UIUtils {
public static Context getContext() {
return BaseApplication.getApplication();
}
public static Thread getMainThread() {
return BaseApplication.getMainThread();
}
public static long getMainThreadId() {
return BaseApplication.getMainThreadId();
}
/** dip转换px */
public static int dip2px(int dip) {
final float scale = getContext().getResources().getDisplayMetrics().density;
return (int) (dip * scale + 0.5f);
}
/** pxz转换dip */
public static int px2dip(int px) {
final float scale = getContext().getResources().getDisplayMetrics().density;
return (int) (px / scale + 0.5f);
}
/** 获取主线程的handler */
public static Handler getHandler() {
//获得主线程的looper
Looper mainLooper = BaseApplication.getMainThreadLooper();
//获取主线程的handler
Handler handler = new Handler(mainLooper);
return handler;
}
/** 延时在主线程执行runnable */
public static boolean postDelayed(Runnable runnable, long delayMillis) {
return getHandler().postDelayed(runnable, delayMillis);
}
/** 在主线程执行runnable */
public static boolean post(Runnable runnable) {
return getHandler().post(runnable);
}
/** 从主线程looper里面移除runnable */
public static void removeCallbacks(Runnable runnable) {
getHandler().removeCallbacks(runnable);
}
public static View inflate(int resId){
return LayoutInflater.from(getContext()).inflate(resId,null);
}
/** 获取资源 */
public static Resources getResources() {
return getContext().getResources();
}
/** 获取文字 */
public static String getString(int resId) {
return getResources().getString(resId);
}
/** 获取文字数组 */
public static String[] getStringArray(int resId) {
return getResources().getStringArray(resId);
}
/** 获取dimen */
public static int getDimens(int resId) {
return getResources().getDimensionPixelSize(resId);
}
public static int getInteger(int resId){
return getResources().getInteger(resId);
}
/** 获取drawable */
public static Drawable getDrawable(int resId) {
return getResources().getDrawable(resId);
}
/** 获取颜色 */
public static int getColor(int resId) {
return getResources().getColor(resId);
}
/** 获取颜色选择器 */
public static ColorStateList getColorStateList(int resId) {
return getResources().getColorStateList(resId);
}
public static boolean isRunInMainThread() {
return android.os.Process.myTid() == getMainThreadId();
}
public static void runInMainThread(Runnable runnable) {
if (isRunInMainThread()) {
runnable.run();
} else {
post(runnable);
}
}
public static void startActivity(Intent intent){
BaseActivity activity = BaseActivity.getForegroundActivity();
if(activity != null){
activity.startActivity(intent);
}else{
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
getContext().startActivity(intent);
}
}
/** 对toast的简易封装。线程安全,可以在非UI线程调用。 */
public static void showToastSafe(final int resId) {
showToastSafe(getString(resId));
}
/** 对toast的简易封装。线程安全,可以在非UI线程调用。 */
public static void showToastSafe(final String str) {
if (isRunInMainThread()) {
showToast(str);
} else {
post(new Runnable() {
@Override
public void run() {
showToast(str);
}
});
}
}
private static void showToast(String str) {
BaseActivity frontActivity = BaseActivity.getForegroundActivity();
if (frontActivity != null) {
Toast.makeText(frontActivity, str, Toast.LENGTH_LONG).show();
}
}
}