2013-01-06 21 views

回答

33

獲取位圖:

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); 
+1

幾乎得到它......但我想半徑固定說30dp(多數民衆贊成簡單),我也希望顯示的圖像(圓形)是從原始圖片的中心... –

+0

你會想要改變這個方法的參數然後:'c.drawCircle(bitmap.getWidth()/ 2,bitmap.getHeight()/ 2,bitmap.getWidth()/ 2,paint)'; – nmw

+0

雅我得到的圖像,但其在佈局中改變其位置,有很多填充/邊緣在左側和頂部... –

0

創建一個位圖,然後在其畫布上繪製,然後將此位圖添加到圖像視圖或按鈕或任何你想要的。

創建位圖:

Bitmap bmp = Bitmap.createBitmap(width, height, config); 

繪製位圖畫布上

Canvas c = new Canvas(bmp); 
c.drawCircle(cx, cy, radius, paint) 

設置imageview的

img.setBackgroundDrawable(new BitmapDrawable(bmp)); 
+2

缺什麼嗎?您創建一個空的位圖並將其設置爲背景。沒有任何意義,因爲它是。 – nmw