Android 如何在圆形图像视图中设置位图?

Android 如何在圆形图像视图中设置位图?,android,Android,我有一个圆形imageview,我想在imageview中放置位图。 但是当我设置压缩位图图像时,它总是矩形的。 请帮助我在圆形图像视图中设置位图 谢谢我很好奇您是如何创建圆形图像视图的。你能分享这个秘密吗?? 就创建圆形位图而言,请从要显示的位图创建BitmapShader。然后创建一个ShapeDrawable(椭圆形)并为其指定位图着色器。画一张可画的画。砰!圆形图像 Bitmap bitmap = getthebitmapyouwanttoshowinacirclefromsomewhe

我有一个圆形imageview,我想在imageview中放置位图。 但是当我设置压缩位图图像时,它总是矩形的。 请帮助我在圆形图像视图中设置位图


谢谢

我很好奇您是如何创建圆形图像视图的。你能分享这个秘密吗?? 就创建圆形位图而言,请从要显示的位图创建BitmapShader。然后创建一个ShapeDrawable(椭圆形)并为其指定位图着色器。画一张可画的画。砰!圆形图像

Bitmap bitmap = getthebitmapyouwanttoshowinacirclefromsomewhere;
Bitmap circleBitmap = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Bitmap.Config.ARGB_8888);

BitmapShader shader = new BitmapShader (bitmap,  TileMode.CLAMP, TileMode.CLAMP);
Paint paint = new Paint();
        paint.setShader(shader);
paint.setAntiAlias(true);
Canvas c = new Canvas(circleBitmap);
c.drawCircle(bitmap.getWidth()/2, bitmap.getHeight()/2, bitmap.getWidth()/2, paint);

myImageView.setImageBitmap(circleBitmap);

出于好奇,您是如何创建圆形图像视图的?您可以在ImageView xml中设置类似android:background=“@drawable/shape\u border\u radious”的内容,然后创建圆形形状,但设置属性android:background:@drawable/round tolayout文件,其中round.xml是一个可绘制的文件,其根属性为shape,值为oval,将创建圆形imageview。如果您通过任何其他方式创建了圆形imageview,请清除一些详细信息。感谢您提供的简单且功能强大的代码,它可以完美地工作!此解决方案效率低下,因为它会创建不必要的屏幕外位图。改为将位图包装在支持库中的a中。我在使用时遇到了问题-图片以肖像形式出现,效果很好,但是在风景图片中,图片底部被拉长了……你知道我需要做什么来解决这个问题吗?@AlexLockwood我尝试了RoundedBitmapDrawable,它的别名甚至比上面的解决方案更差。请详细说明上述解决方案是如何创建屏幕外位图的?RoundedBitmapDrawable是如何工作的?