package com.mgw.member.uitls; import android.annotation.SuppressLint; import android.graphics.Bitmap; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.graphics.drawable.GradientDrawable; import android.graphics.drawable.StateListDrawable; import android.os.Build; /** * 图片工具类 */ public class DrawableUtils { /** * 创建一个图片 * * @param contentColor * 内部填充颜色 * @param strokeColor * 描边颜色 * @param radius * 圆角 */ public static GradientDrawable createDrawable(int contentColor, int strokeColor, int radius) { GradientDrawable drawable = new GradientDrawable(); // 生成Shape drawable.setGradientType(GradientDrawable.RECTANGLE); // 设置矩形 drawable.setColor(contentColor);// 内容区域的颜色 drawable.setStroke(1, strokeColor); // 四周描边,描边后四角真正为圆角,不会出现黑色阴影。如果父窗体是可以滑动的,需要把父View设置setScrollCache(false) drawable.setCornerRadius(radius); // 设置四角都为圆角 return drawable; } /** * 创建一个图片选择器 * @param normalState * 普通状态的图片 * @param pressedState * 按压状态的图片 */ public static StateListDrawable createSelector(Drawable normalState, Drawable pressedState) { StateListDrawable bg = new StateListDrawable(); bg.addState(new int[] { android.R.attr.state_pressed, android.R.attr.state_enabled }, pressedState); bg.addState(new int[] { android.R.attr.state_enabled }, normalState); bg.addState(new int[] {}, normalState); return bg; } /** 获取图片的大小 */ @SuppressLint("NewApi") public static int getDrawableSize(Drawable drawable) { if (drawable == null) { return 0; } Bitmap bitmap = ((BitmapDrawable) drawable).getBitmap(); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR1) { return bitmap.getByteCount(); } else { return bitmap.getRowBytes() * bitmap.getHeight(); } } }