package com.github.airsaid.accountbook.util; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.content.res.ColorStateList; import android.content.res.Resources; import android.content.res.TypedArray; import android.graphics.drawable.Drawable; import android.os.Build; import android.support.v4.content.ContextCompat; import android.support.v7.widget.RecyclerView; import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.Window; import android.view.WindowManager; import android.widget.EditText; import android.widget.ImageView; import android.widget.TextView; import com.github.airsaid.accountbook.mvp.main.MainActivity; import com.github.airsaid.accountbook.R; import com.github.airsaid.accountbook.base.BaseApplication; import com.github.airsaid.accountbook.mvp.login.LoginActivity; /** * Created by zhouyou on 2016/6/27. * Class desc: ui 操作相关封装 */ public class UiUtils { /** * 获取上下文 */ public static Context getContext() { return BaseApplication.getContext(); } /** * 获取资源操作类 */ public static Resources getResources() { return getContext().getResources(); } /** * 获取字符串资源 * * @param id 资源id * @return 字符串 */ public static String getString(int id) { return getResources().getString(id); } /** * 获取字符串数组资源 * * @param id 资源id * @return 字符串数组 */ public static String[] getStringArray(int id) { return getResources().getStringArray(id); } /** * 获取颜色资源 */ public static int getColor(int id) { return ContextCompat.getColor(getContext(), id); } /** * 获取颜色资源 * * @param id 资源id * @param theme 样式 * @return */ public static int getColor(int id, Resources.Theme theme) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { return getResources().getColor(id, theme); } return getResources().getColor(id); } /** * 获取drawable资源 * * @param id 资源id * @return */ public static Drawable getDrawable(int id) { return ContextCompat.getDrawable(getContext(), id); } /** * 通过图片名称获取图片资源 id * @param imageName 图片名称 * @return 图片资源 id */ public static int getImageResIdByName(String imageName){ return getResources().getIdentifier(imageName, "mipmap" , AppUtils.getPackageName()); } /** * 加载布局(使用View方式) * * @param resource 布局资源id * @return View */ public static View inflate(int resource) { return View.inflate(getContext(), resource, null); } /** * 检查输入的内容是否为空 */ public static boolean checkEmpty(EditText editText) { if(TextUtils.isEmpty(editText.getText().toString())){ ToastUtils.show(UiUtils.getContext(), UiUtils.getString(R.string.hint_empty)); return true; } return false; } /** * 设置透明状态栏 * @param activity */ public static void setStatusBar(Activity activity) { if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT){ // 对于4.4以上5.0以下版本,设置透明状态栏 Window window = activity.getWindow(); window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); }else if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){ // 5.0及以上版本,设置透明状态栏 Window window = activity.getWindow(); // 清理4.4Flag window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE); // 添加标志位 window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); // 设置为透明 window.setStatusBarColor(0); } } /** * 进入首页 */ public static void enterHomePage(Context context){ ActivityManager.getInstance().popAllActivity(); Intent intent = new Intent(context, MainActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP); context.startActivity(intent); if(context instanceof Activity){ ((Activity)context).finish(); } } /** * 进入登录页 * @param context 上下文 */ public static void enterLoginPage(Context context){ enterLoginPage(context, false); } /** * 进入登录页 * @param context 上下文 * @param isFinish 是否关闭当前 Activity */ public static void enterLoginPage(Context context, boolean isFinish){ ActivityManager.getInstance().popAllActivity(); Intent intent = new Intent(context, LoginActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); if(!(context instanceof Activity)){ intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); } context.startActivity(intent); if(isFinish && context instanceof Activity){ ((Activity)context).finish(); } } public static ColorStateList getColorList(int resId) { return ContextCompat.getColorStateList(UiUtils.getContext(), resId); } public static void setCompoundDrawables(TextView textView, Drawable left, Drawable top, Drawable right, Drawable bottom){ textView.setCompoundDrawablesWithIntrinsicBounds(left, top, right, bottom); } /** * 获取列表为空时显示的 Empty View * @return 默认 Empty View */ public static View getEmptyView(Context context, RecyclerView recyclerView){ return getEmptyView(context, recyclerView, null, -1); } /** * 获取列表为空时显示的 Empty View * @param emptyText 提示文字 * @return Empty View */ public static View getEmptyView(Context context, RecyclerView recyclerView, String emptyText){ return getEmptyView(context, recyclerView, emptyText, -1); } /** * 获取列表为空时显示的 Empty View * @param emptyText 提示文字 * @param emptyImgId 图片 * @return Empty View */ public static View getEmptyView(Context context, RecyclerView recyclerView, String emptyText, int emptyImgId){ View emptyView = LayoutInflater.from(context).inflate(R.layout.view_empty, (ViewGroup) recyclerView.getParent(), false); if(emptyText != null){ ((TextView)emptyView.findViewById(R.id.txt_empty)).setText(emptyText); } if(emptyImgId != -1){ ((ImageView)emptyView.findViewById(R.id.img_empty)).setImageResource(emptyImgId); } return emptyView; } /** * 通过场景名获取场景资源图片 id * @param scene 场景名称 * @return 场景资源图片 id */ public static int getSceneImageResIdByName(String scene){ switch (scene){ case "日常": return R.mipmap.book_scene1; case "校园": return R.mipmap.book_scene2; case "生意": return R.mipmap.book_scene3; case "家庭": return R.mipmap.book_scene4; case "旅行": return R.mipmap.book_scene5; case "装修": return R.mipmap.book_scene6; case "结婚": return R.mipmap.book_scene7; default: return R.mipmap.book_scene1; } } /** 显示不带 null 的字符 */ public static String show(String text){ return text != null ? text : ""; } /** * 根据自定义属性获取对应颜色值. * @param context 上下文 * @param attrs 自定义属性 * @param defColor 默认颜色 * @return 颜色 */ public static int getColor(Context context, int attrs, int defColor){ int[] customAttrs = {attrs}; TypedArray a = context.obtainStyledAttributes(customAttrs); int color = a.getColor(0, defColor); a.recycle(); return color; } /** * 根据自定义属性获取对应资源 id. * @param context 上下文 * @param attrs 自定义属性 * @param defId 默认 id * @return 资源 id */ public static int getResourceId(Context context, int attrs, int defId){ int[] customAttrs = {attrs}; TypedArray a = context.obtainStyledAttributes(customAttrs); int id = a.getResourceId(0, defId); a.recycle(); return id; } }