Dro*_*man 6 android bitmap imageview
我有一个imageView,我正在尝试创建圆角,尝试了这篇文章中的所有解决方案:如何制作带圆角的ImageView? 但没有任何效果......这是我的XML
<RelativeLayout
android:id="@+id/RL_ImageHolder"
android:layout_width="150dp"
android:layout_height="180dp"
android:layout_alignBottom="@+id/relativeLayout2"
android:layout_alignParentLeft="true"
android:layout_alignTop="@+id/relativeLayout2"
android:layout_marginLeft="10dp" >
<ImageView
android:id="@+id/imgPreview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:contentDescription="Preview"
/>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
这就是我使用上面链接的帖子中提到的方法设置ImageView的方法:
byteArray = extras.getByteArray("picture");
if (byteArray != null) {
bmp = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);
preview.setScaleType(ScaleType.CENTER_CROP);
preview.setImageBitmap(getRoundedCornerBitmap(bmp));
Run Code Online (Sandbox Code Playgroud)
图像设置正确,但它保留一个矩形..任何想法为什么它不起作用?
编辑:刚刚发现,只有当持有图像的布局具有固定的宽度/高度时,它才起作用.不得不考虑如何管理它.多谢你们
尝试使用Below Code Snippet:
public static Bitmap GetCurveImage(Bitmap bitmap) {
// Bitmap myCoolBitmap = ... ; // <-- Your bitmap you
// want rounded
int w = bitmap.getWidth(), h = bitmap.getHeight();
// We have to make sure our rounded corners have an
// alpha channel in most cases
Bitmap rounder = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(rounder);
// We're going to apply this paint eventually using a
// porter-duff xfer mode.
// This will allow us to only overwrite certain pixels.
// RED is arbitrary. This
// could be any color that was fully opaque (alpha =
// 255)
Paint xferPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
xferPaint.setColor(Color.RED);
// We're just reusing xferPaint to paint a normal
// looking rounded box, the 20.f
// is the amount we're rounding by.
canvas.drawRoundRect(new RectF(0, 0, w, h), 5.0f, 5.0f, xferPaint);
// Now we apply the 'magic sauce' to the paint
xferPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_IN));
Bitmap result = Bitmap.createBitmap(bitmap.getWidth(),
bitmap.getHeight(), Bitmap.Config.ARGB_8888);
Canvas resultCanvas = new Canvas(result);
resultCanvas.drawBitmap(bitmap, 0, 0, null);
resultCanvas.drawBitmap(rounder, 0, 0, xferPaint);
return result;
}
Run Code Online (Sandbox Code Playgroud)
希望它会帮助你.
| 归档时间: |
|
| 查看次数: |
1865 次 |
| 最近记录: |