( ImageView )——使用BitMap创建圆形的ImageView

图片路径

用户的使用的图片路径需要放到assets文件夹下面

并获取AssetManager对象(在获取图片资源时完成了该步骤

获取资源文件中的图片资源

public Bitmap getBitMap(String path) {
    mAssetManager = this.getAssets();
    InputStream in = null;
    try {
        in = mAssetManager.open(path);
    } catch (IOException e) {
        e.printStackTrace();
    }
    Bitmap bm = BitmapFactory.decodeStream(in);
    return bm;
}

对图片获取到的BitMap进行处理

通过处理获取到的Bitmap ,使得bitmap生成圆形的样式

public static Bitmap toRoundBitmap(Bitmap bitmap) {
    int width = bitmap.getWidth();
    int height = bitmap.getHeight();
    float roundPx;
    float left, top, right, bottom, dst_left, dst_top, dst_right, dst_bottom;
    if (width <= height) {
        roundPx = width / 2;
        top = 0;
        bottom = width;
        left = 0;
        right = width;
        height = width;
        dst_left = 0;
        dst_top = 0;
        dst_right = width;
        dst_bottom = width;
    } else {
        roundPx = height / 2;
        float clip = (width - height) / 2;
        left = clip;
        right = width - clip;
        top = 0;
        bottom = height;
        width = height;
        dst_left = 0;
        dst_top = 0;
        dst_right = height;
        dst_bottom = height;
    }
    Bitmap output = Bitmap.createBitmap(width,
            height, Bitmap.Config.ARGB_8888);
    Canvas canvas = new Canvas(output);
    final int color = 0xff424242;
    final Paint paint = new Paint();
    final Rect src = new Rect((int) left, (int) top, (int) right, (int) bottom);
    final Rect dst = new Rect((int) dst_left, (int) dst_top, (int) dst_right, (int) dst_bottom);
    final RectF rectF = new RectF(dst);
    paint.setAntiAlias(true);
    canvas.drawARGB(0, 0, 0, 0);
    paint.setColor(color);
    canvas.drawRoundRect(rectF, roundPx, roundPx, paint);
    paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
    canvas.drawBitmap(bitmap, src, dst, paint);
    return output;
}

添加图片资源

mImgVia.setImageBitmap(toRoundBitmap(getBitMap("img_via3.jpg")));

参考:https://www.jb51.net/article/107275.htm

你可能感兴趣的:(Android小问题)