google+のアプリとかでプロフィールアイコンが丸くなってたりするじゃないですか!!
アレどーやるんだろうと調べてたらできたのでメモ。
// bitmapは元の画像 Bitmap circleBitmap = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Bitmap.Config.ARGB_8888); BitmapShader shader; shader = new BitmapShader(bitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP); Paint paint = new Paint(); paint.setAntiAlias(true); paint.setShader(shader); int circleCenter = bitmap.getWidth() / 2; Canvas canvas = new Canvas(circleBitmap); // 元の画像の中心点に、元の画像の半分のサイズの半径で円を描く canvas.drawCircle(circleCenter, circleCenter, circleCenter, paint); //imageViewはなんか適当に用意する imageView.setImageBitmap(circleBitmap);
ついでに縦や横に長い画像をやる場合。
こういうのは真ん中で正方形にくり抜いてからやった方がいいよね、というわけで正方形にするメソッド。
int width = bitmap.getWidth(); int height = bitmap.getHeight(); Bitmap croppedBitmap; if (width > height) { croppedBitmap = Bitmap.createBitmap(bitmap, width / 2 - height / 2, 0, height, height); } else { croppedBitmap = Bitmap.createBitmap(bitmap, 0, height / 2 - width / 2, width, width); } return croppedBitmap;