如何在android中创建完整的圆形图像视图

如何在android中创建完整的圆形图像视图,android,android-layout,imageview,android-canvas,Android,Android Layout,Imageview,Android Canvas,可能重复: 我想要一个360度的圆形图像视图,我在stackoverflow上找到了相关的解决方案,但它们都在图像视图中产生圆角。但我想要完整的圆形图像视图 对于圆角,图像视图链接包括: 任何想法。创建一个位图,然后在画布上绘制,然后将此位图添加到图像视图、按钮或任何您想要的内容中 创建位图: Bitmap bmp = Bitmap.createBitmap(width, height, config); 在位图画布上绘制 Canvas c = new Canvas(bmp); c.

可能重复:

我想要一个360度的圆形图像视图,我在stackoverflow上找到了相关的解决方案,但它们都在图像视图中产生圆角。但我想要完整的圆形图像视图

对于圆角,图像视图链接包括:


任何想法。

创建一个位图,然后在画布上绘制,然后将此位图添加到图像视图、按钮或任何您想要的内容中

创建位图:

Bitmap bmp = Bitmap.createBitmap(width, height, config);
在位图画布上绘制

Canvas c = new Canvas(bmp);
c.drawCircle(cx, cy, radius, paint)
设置为imageview

img.setBackgroundDrawable(new BitmapDrawable(bmp));
获取位图:

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);
画画布

Canvas c = new Canvas(circleBitmap);
c.drawCircle(bitmap.getWidth()/2, bitmap.getHeight()/2, bitmap.getWidth()/2, paint);
设置图像:

myImageView.setImageBitmap(circleBitmap);

差不多了。。。但是我希望半径是固定的,比如说30dp(这很简单),我还希望显示的图像(圆形)是从原始图片的中心开始的……然后您需要更改此方法的参数:
c.drawCircle(bitmap.getWidth()/2,bitmap.getHeight()/2,bitmap.getWidth()/2,paint)
;是的,我得到了图像,但是它改变了它在布局中的位置,在左侧和顶部有很多填充/边距…事实上,你将不得不根据你的位置来使用画布和画圈中的参数needs@Waza_be,将其作为付费答案:-)另外添加:使用方形图像表示圆形。缺少什么?创建一个空位图并将其设置为背景。这是毫无意义的。