295 lines
9.9 KiB
Java
295 lines
9.9 KiB
Java
package cn.shangyu.gdxzExpert.utils;
|
||
|
||
import android.app.ActivityManager;
|
||
import android.app.ActivityManager.RunningAppProcessInfo;
|
||
import android.content.Context;
|
||
import android.content.res.ColorStateList;
|
||
import android.graphics.drawable.Drawable;
|
||
import android.net.ConnectivityManager;
|
||
import android.net.NetworkInfo;
|
||
import android.os.Handler;
|
||
import android.view.View;
|
||
import android.widget.Toast;
|
||
|
||
import java.util.List;
|
||
|
||
import android.app.Activity;
|
||
import android.content.Intent;
|
||
import cn.shangyu.gdxzExpert.activity.LoginNewActivity;
|
||
import cn.shangyu.gdxzExpert.application.BaseApplication;
|
||
/**
|
||
*
|
||
* UIUtils.java
|
||
* @author gaofei
|
||
* @date 2015-8-31 上午9:54:49
|
||
* Copyright (C) 2015 河南商宇科技有限公司
|
||
*
|
||
* 功能说明:一些基本的工具类,1、获取上下文 2、得到主线程id以及主线程 3、得到handler 4、获取资源文件
|
||
* 6、把资源id转化为string,7、把资源id转化为drawable 8、把资源id转化为stringArray 9、dip--->px 10、px---->dp
|
||
* 11、java代码区设置颜色选择器的方法 12、资源id获得颜色 14、检测网络是否可用 15 、检测Sdcard是否存在
|
||
*
|
||
* 等等。
|
||
*/
|
||
public class UIUtils {
|
||
|
||
private static Toast mToast;
|
||
//得到上下文
|
||
public static Context getContext(){
|
||
return BaseApplication.getContext();
|
||
}
|
||
//得到主线程id
|
||
public static int getMainThreadId(){
|
||
return BaseApplication.getMainThreadId();
|
||
}
|
||
//得到主线程
|
||
public static Thread getMainThread(){
|
||
return BaseApplication.getMainThread();
|
||
}
|
||
//得到handler
|
||
public static Handler getHandler(){
|
||
return BaseApplication.getHandler();
|
||
}
|
||
|
||
//把资源id转化为string
|
||
public static String getString(int id){
|
||
return getContext().getString(id);
|
||
}
|
||
//把资源id转化为drawable
|
||
public static Drawable getDrawable(int id){
|
||
return getContext().getResources().getDrawable(id);
|
||
}
|
||
//把资源id转化为stringArray
|
||
public static String[] getStringArray(int id){
|
||
return getContext().getResources().getStringArray(id);
|
||
}
|
||
|
||
//dip--->px 1dp = 1px 1dp = 2px
|
||
public static int dip2px(int dip){
|
||
//dp和px的转换关系比例值
|
||
float density = getContext().getResources().getDisplayMetrics().density;
|
||
return (int)(dip*density+0.5);
|
||
}
|
||
//px---->dp
|
||
public static int px2dip(int px){
|
||
//dp和px的转换关系比例值
|
||
float density = getContext().getResources().getDisplayMetrics().density;
|
||
return (int)(px/density+0.5);
|
||
}
|
||
|
||
//判断是否是主线的方法
|
||
public static boolean isRunInMainThread(){
|
||
return getMainThreadId() == android.os.Process.myTid();
|
||
}
|
||
|
||
/**
|
||
* 在主线程执行runnable
|
||
*/
|
||
public static boolean post(Runnable runnable) {
|
||
return getHandler().post(runnable);
|
||
}
|
||
|
||
//保证当前的UI操作在主线程里面运行
|
||
public static void runInMainThread(Runnable runnable){
|
||
if(isRunInMainThread()){
|
||
//如果现在就是在珠现场中,就直接运行run方法
|
||
runnable.run();
|
||
}else{
|
||
//否则将其传递到主线程中运行
|
||
post(runnable);
|
||
}
|
||
}
|
||
|
||
//java代码区设置颜色选择器的方法
|
||
public static ColorStateList getColorStateList(int mTabTextColorResId) {
|
||
return getContext().getResources().getColorStateList(mTabTextColorResId);
|
||
}
|
||
/**
|
||
* 把xml文件转化为view
|
||
*
|
||
*/
|
||
public static View inflate(int id){
|
||
return View.inflate(getContext(), id, null);
|
||
}
|
||
|
||
public static int getDimens(int id) {
|
||
//根据dimens中提供的id,将其对应的dp值转换成相应的像素值大小
|
||
return UIUtils.getContext().getResources().getDimensionPixelSize(id);
|
||
}
|
||
|
||
public static void postDelayed(Runnable runnable,long delayTime) {
|
||
getHandler().postDelayed(runnable, delayTime);
|
||
}
|
||
|
||
public static void removeCallback(Runnable runnable) {
|
||
//移除在当前handler中维护的任务(传递进来的任务)
|
||
getHandler().removeCallbacks(runnable);
|
||
|
||
}
|
||
/**
|
||
* 资源id获得颜色
|
||
*
|
||
*/
|
||
public static int getColor(int id) {
|
||
return getContext().getResources().getColor(id);
|
||
}
|
||
|
||
|
||
/**
|
||
*
|
||
* @author gaofei
|
||
* @date 2015-9-6 下午7:41:31
|
||
*
|
||
* 功能说明:检测网络是否可用
|
||
*/
|
||
public static boolean isNetWorkConnected(Context context) {
|
||
if (context != null) {
|
||
ConnectivityManager mConnectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
|
||
NetworkInfo mNetworkInfo = mConnectivityManager.getActiveNetworkInfo();
|
||
if (mNetworkInfo != null) {
|
||
return mNetworkInfo.isAvailable();
|
||
}
|
||
}
|
||
return false;
|
||
}
|
||
|
||
/**
|
||
*
|
||
* @author gaofei
|
||
* @date 2015-9-6 下午7:41:31
|
||
*
|
||
* 功能说明:检测Sdcard是否存在
|
||
*/
|
||
public static boolean isExitsSdcard() {
|
||
if (android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED))
|
||
return true;
|
||
else
|
||
return false;
|
||
}
|
||
|
||
/**
|
||
*
|
||
* isLogined
|
||
* 判断是否登录,以后要加上容联的,以及自动登录需要考虑,现在只是简单读取sp文件
|
||
* true表示已登录
|
||
* @return
|
||
* boolean
|
||
*/
|
||
public static boolean isAccountLogined() {
|
||
boolean isLogin = SharePrefUtil.getBoolean(getContext(), Constant.IS_LOGIN, false);
|
||
String uuid = SharePrefUtil.getString(getContext(), Constant.uuid, "");
|
||
return isLogin && !StringUtil.isEmpty(uuid);
|
||
}
|
||
|
||
public static boolean isLogined() {
|
||
return isAccountLogined() && SharePrefUtil.getInt(getContext(), "state", 0) == 6;
|
||
}
|
||
|
||
public static boolean checkAccountLoginAndJump(Context context) {
|
||
if (isAccountLogined()) {
|
||
return true;
|
||
}
|
||
long now = System.currentTimeMillis();
|
||
if (now - lastJumpLoginTime < 800) {
|
||
return false;
|
||
}
|
||
lastJumpLoginTime = now;
|
||
Context targetContext = context != null ? context : getContext();
|
||
Intent intent;
|
||
if (isAccountLogined()) {
|
||
intent = new Intent(targetContext, cn.shangyu.gdxzExpert.activity.LoginSetInfoActivity.class);
|
||
intent.putExtra("state", SharePrefUtil.getInt(getContext(), "state", 0));
|
||
intent.putExtra("checkInfo", SharePrefUtil.getString(getContext(), "checkInfo", ""));
|
||
intent.putExtra("phone", SharePrefUtil.getString(getContext(), Constant.mobile, ""));
|
||
} else {
|
||
intent = new Intent(targetContext, LoginNewActivity.class);
|
||
}
|
||
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);
|
||
if (!(targetContext instanceof Activity)) {
|
||
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||
}
|
||
targetContext.startActivity(intent);
|
||
return false;
|
||
}
|
||
|
||
private static boolean unusedOldIsLogined() {
|
||
// TODO Auto-generated method stub
|
||
boolean isLogin = SharePrefUtil.getBoolean(getContext(), Constant.IS_LOGIN, false);
|
||
String uuid = SharePrefUtil.getString(getContext(), Constant.uuid, "");
|
||
return isLogin && !StringUtil.isEmpty(uuid);
|
||
}
|
||
|
||
/**
|
||
* 校验是否已登录,未登录则拉起登录页
|
||
*
|
||
* @param context 上下文
|
||
* @return true 已登录;false 未登录(已跳转登录页)
|
||
*/
|
||
private static long lastJumpLoginTime = 0L;
|
||
|
||
public static boolean checkLoginAndJump(Context context) {
|
||
if (isLogined()) {
|
||
return true;
|
||
}
|
||
long now = System.currentTimeMillis();
|
||
if (now - lastJumpLoginTime < 800) {
|
||
return false;
|
||
}
|
||
lastJumpLoginTime = now;
|
||
Context targetContext = context != null ? context : getContext();
|
||
Intent intent;
|
||
if (isAccountLogined()) {
|
||
intent = new Intent(targetContext, cn.shangyu.gdxzExpert.activity.LoginSetInfoActivity.class);
|
||
intent.putExtra("state", SharePrefUtil.getInt(getContext(), "state", 0));
|
||
intent.putExtra("checkInfo", SharePrefUtil.getString(getContext(), "checkInfo", ""));
|
||
intent.putExtra("phone", SharePrefUtil.getString(getContext(), Constant.mobile, ""));
|
||
} else {
|
||
intent = new Intent(targetContext, LoginNewActivity.class);
|
||
}
|
||
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);
|
||
if (!(targetContext instanceof Activity)) {
|
||
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||
}
|
||
targetContext.startActivity(intent);
|
||
return false;
|
||
}
|
||
|
||
public static boolean isBackground() {
|
||
ActivityManager activityManager = (ActivityManager) getContext()
|
||
.getSystemService(Context.ACTIVITY_SERVICE);
|
||
List<RunningAppProcessInfo> appProcesses = activityManager
|
||
.getRunningAppProcesses();
|
||
for (RunningAppProcessInfo appProcess : appProcesses) {
|
||
if (appProcess.processName.equals( getContext() .getPackageName())) {
|
||
/*
|
||
BACKGROUND=400 EMPTY=500 FOREGROUND=100
|
||
GONE=1000 PERCEPTIBLE=130 SERVICE=300 ISIBLE=200
|
||
*/
|
||
// LogUtil.i( getContext() .getPackageName(), "appimportace ="
|
||
// + appProcess.importance
|
||
// + ",context.getClass().getName()="
|
||
// + getContext() .getClass().getName());
|
||
if (appProcess.importance != RunningAppProcessInfo.IMPORTANCE_FOREGROUND) {
|
||
// LogUtil.i( getContext() .getPackageName(), "处于后台"
|
||
// + appProcess.processName);
|
||
return true;
|
||
} else {
|
||
// LogUtil.i( getContext() .getPackageName(), "处于前台"
|
||
// + appProcess.processName);
|
||
return false;
|
||
}
|
||
}
|
||
}
|
||
return false;
|
||
}
|
||
// public static Boolean isActivityBackground()
|
||
// {
|
||
// ActivityManager manager = (ActivityManager)getContext().getSystemService(Context.ACTIVITY_SERVICE);
|
||
// ActivityManager.RunningTaskInfo info = manager.getRunningTasks(1).get(0);
|
||
// String shortClassName = info.topActivity.getShortClassName(); // 类名
|
||
// String className = info.topActivity.getClassName(); // 完整类名
|
||
// String packageName = info.topActivity.getPackageName(); // 包
|
||
// return true;
|
||
// }
|
||
|
||
}
|