package sf.mobile.sf.widget;import android.annotation.SuppressLint;import android.content.Context;import android.graphics.Bitmap;import android.graphics.Bitmap.Config;import android.graphics.Canvas;import android.graphics.Paint;import android.graphics.PorterDuff.Mode;import android.graphics.PorterDuffXfermode;import android.graphics.Rect;import android.graphics.RectF;import android.graphics.drawable.BitmapDrawable;import android.graphics.drawable.Drawable;import android.util.AttributeSet;import android.widget.ImageView;/** * 描述:圆角矩形ImageView * @author HJK */@SuppressLint("DrawAllocation")public class RoundRectImageView extends ImageView {public RoundRectImageView(Context context) {super(context);}public RoundRectImageView(Context context, AttributeSet attrs) {super(context, attrs);}public RoundRectImageView(Context context, AttributeSet attrs, int defStyle) {super(context, attrs, defStyle);}@SuppressLint("DrawAllocation")@Override      protected void onDraw(Canvas canvas) {          Drawable drawable = getDrawable();          if (drawable == null) {              return;          }            if (getWidth() == 0 || getHeight() == 0) {              return;           }          Bitmap bitmap = ((BitmapDrawable) drawable).getBitmap();          Bitmap b = getRoundBitmap(bitmap, 10);          final Rect rectSrc = new Rect(0, 0, b.getWidth(), b.getHeight());          final Rect rectDest = new Rect(0, 0, getWidth(), getHeight());        canvas.drawBitmap(b, rectSrc, rectDest, null);      } /**     * 获取圆角矩形图片方法     * @param bitmap     * @param roundPx,一般设置成14     * @return Bitmap     */    private Bitmap getRoundBitmap(Bitmap bitmap, int radius) {          Bitmap output = Bitmap.createBitmap(bitmap.getWidth(),                  bitmap.getHeight(), Config.ARGB_8888);          Canvas canvas = new Canvas(output);                    final int color = 0xff424242;               final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());          final RectF rectF = new RectF(rect);        Paint paint = new Paint();          paint.setAntiAlias(true);          canvas.drawARGB(0, 0, 0, 0);          paint.setColor(color);          int x = bitmap.getWidth();                 canvas.drawRoundRect(rectF, radius, radius, paint);        paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));          canvas.drawBitmap(bitmap, rect, rect, paint);          return output;      }  }

更多相关文章

  1. Android 旋转图片
  2. Android 图片加载缓存
  3. Android 系统图片
  4. 图片压缩
  5. Android SDK Manager 更新失败的解决方法
  6. Android三种方法设置ImageView的图片
  7. 全志A64 Android7.1屏蔽使用按键进入安全模式的方法
  8. Android使用AttributeSet自定义控件的方法
  9. 让Android不播放关机动画,而是显示一个关机进度条的方法

随机推荐

  1. Android(安卓)知识体系学习目录
  2. Android(安卓)SDK离线安装方法详解(加速
  3. Android(安卓)Handler.removeMessage移除
  4. Android(安卓)WifiManager 中的常量
  5. android 用canvas.clipPath 画不规则的Bi
  6. Android(安卓)Studio 安装教程(Windows)(
  7. android开源项目学习
  8. Android(安卓)如何避免运行时奔溃
  9. Android在任意位置获取应用程序Context
  10. Android(安卓)之 自定义标签 和 自定义组