如何在圆形imageview中设置位图?

Mon*_*ali 9 android

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

谢谢

pum*_*kee 48

我很好奇你是如何创建一个圆形的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);
Run Code Online (Sandbox Code Playgroud)

  • 此解决方案效率低,因为它会创建不必要的屏幕外位图.将位图包含在[RoundedBitmapDrawable](https://developer.android.com/reference/android/support/v4/graphics/drawable/RoundedBitmapDrawable.html)中,而不是来自支持库. (2认同)