Android 对UI操作的工具类UIUtils
susan1318
8年前
<p>Android中对UI操作的工具类,大概还有不少常用方法没有记录进去,以后用到一些再更新就好哒~网上那么多资料来着。</p> <p>我绝对是仙剑是真爱粉呐,今朝眼神好温柔哟~今朝和祈好甜蜜啊~羡慕!</p> <p style="text-align:center"><img src="https://simg.open-open.com/show/c9ea23eef5e1bb0fca0fb39f16aa9020.png"></p> <p> </p> <pre> <code class="language-java">public class UIUtils { public static Context getContext() { return XXApplication.getInstance(); } /** * 获取资源对象 */ public static Resources getResources() { return getContext().getResources(); } /** * 获取资源文件字符串 * * @param id * @return */ public static String getString(int id) { return getResources().getString(id); } /** * 获取资源文件字符串数组 * * @param id * @return */ public static String[] getStringArray(int id) { return getResources().getStringArray(id); } /** * 获取资源文件图片 * * @param id * @return */ public static Drawable getDrawable(int id) { return ContextCompat.getDrawable(getContext(), id); } /** * 获取资源文件颜色 * * @param id * @return */ public static int getColor(int id) { return ContextCompat.getColor(getContext(), id); } /** * 根据id获取颜色的状态选择器 * * @param id * @return */ public static ColorStateList getColorStateList(int id) { return ContextCompat.getColorStateList(getContext(), id); } /** * 获取尺寸 * * @param id * @return */ public static int getDimen(int id) { return getResources().getDimensionPixelSize(id); // 返回具体像素值 } /** * dp -> px * * @param dp * @return */ public static int dp2px(float dp) { float density = getResources().getDisplayMetrics().density; return (int) (dp * density + 0.5f); } /** * px -> dp * * @param px * @return */ public static float px2dp(int px) { float density = getResources().getDisplayMetrics().density; return px / density; } /** * 加载布局文件 * * @param id * @return */ public static View inflate(int id) { return View.inflate(getContext(), id, null); } /** * 把自身从父View中移除 * @param view */ public static void removeSelfFromParent(View view) { if (view != null) { ViewParent parent = view.getParent(); if (parent != null && parent instanceof ViewGroup) { ViewGroup group = (ViewGroup) parent; group.removeView(view); } } } /** * 请求View树重新布局,用于解决中层View有布局状态而导致上层View状态断裂 * @param view * @param isAll */ public static void requestLayoutParent(View view, boolean isAll) { ViewParent parent = view.getParent(); while (parent != null && parent instanceof View) { if (!parent.isLayoutRequested()) { parent.requestLayout(); if (!isAll) { break; } } parent = parent.getParent(); } } /** * 判断触点是否落在该View上 * @param ev * @param v * @return */ public static boolean isTouchInView(MotionEvent ev, View v) { int[] vLoc = new int[2]; v.getLocationOnScreen(vLoc); float motionX = ev.getRawX(); float motionY = ev.getRawY(); return motionX >= vLoc[0] && motionX <= (vLoc[0] + v.getWidth()) && motionY >= vLoc[1] && motionY <= (vLoc[1] + v.getHeight()); } /** * findViewById的泛型封装,减少强转代码 * @param layout * @param id * @param <T> * @return */ public static <T extends View> T findViewById(View layout, int id) { return (T) layout.findViewById(id); } /** * 获取屏幕的比例 * @param context * @return */ public static float getScaledDensity(Context context) { DisplayMetrics dm = context.getResources().getDisplayMetrics(); float value = dm.scaledDensity; return value; } /** * 获取控件的高度,如果获取的高度为0,则重新计算尺寸后再返回高度 * @param view * @return */ public static int getViewMeasuredHeight(View view) { calcViewMeasure(view); return view.getMeasuredHeight(); } /** * 获取控件的宽度,如果获取的宽度为0,则重新计算尺寸后再返回宽度 * @param view * @return */ public static int getViewMeasuredWidth(View view) { calcViewMeasure(view); return view.getMeasuredWidth(); } /** * 测量控件的尺寸 * @param view */ public static void calcViewMeasure(View view) { int width = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED); int expandSpec = View.MeasureSpec.makeMeasureSpec( Integer.MAX_VALUE >> 2, View.MeasureSpec.AT_MOST); view.measure(width, expandSpec); } /** * 设置textview指定文字为某一颜色 * * @param content 显示的文字 * @param color 需要转换成的颜色值 * @param start 需要变色文字开始位置 * @param end 需要变色文字结束位置 */ public static SpannableStringBuilder changeTextColor(String content, int color, int start, int end) { SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder(content); spannableStringBuilder.setSpan(new ForegroundColorSpan(color), start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); return spannableStringBuilder; } }</code></pre> <p> </p> <p> </p> <p>来自:http://www.jianshu.com/p/a5f34960eb11</p> <p> </p>