角落不是来自Drawable的图像

时间:2012-11-08 11:18:54

标签: android

我引用this问题链接到this文章,了解如何在图片上创建圆角。

它适用于我从网上下载的图像,但是当我从Resources / Drawable文件夹中读取图像时,图像没有被舍入。

从网上获取图片时我使用:

Bitmap img = BitmapFactory.decodeStream(inputStream);

从我使用的资源解码时:

Bitmap img = BitmapFactory.decodeResource(ctx.getResources(), R.drawable.profile_photo);

从资源解码时,返回的位图不为空。

关于我在这个问题上出错的任何想法?

2 个答案:

答案 0 :(得分:0)

添加“形状”(可绘制的XML)。

<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
<solid android:color="#ffffffff"/>    

<stroke android:width="3dp"
        android:color="#ff000000"
        />

<padding android:left="1dp"
         android:top="1dp"
         android:right="1dp"
         android:bottom="1dp"
         /> 

<corners android:bottomRightRadius="7dp" android:bottomLeftRadius="7dp" 
 android:topLeftRadius="7dp" android:topRightRadius="7dp"/> 

&安培;使用这个形状与您的drawable。或使用此代码

public static Bitmap getRoundedCornerBitmap(Bitmap bitmap) {
Bitmap output = Bitmap.createBitmap(bitmap.getWidth(),
     bitmap.getHeight(), Config.ARGB_8888);
Canvas canvas = new Canvas(output);

final int color = 0xff424242;
final Paint paint = new Paint();
final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());
final RectF rectF = new RectF(rect);
final float roundPx = 12;

paint.setAntiAlias(true);
canvas.drawARGB(0, 0, 0, 0);
paint.setColor(color);

canvas.drawRoundRect(rectF, roundPx, roundPx, paint);

paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
canvas.drawBitmap(bitmap, rect, rect, paint);

return output;
}

答案 1 :(得分:0)

我刚刚发现问题是由于输入图像的分辨率不同。

来自资源的图像比网页大得多,因此我需要增加半径以获得舍入效果。