반응형
hexagon이미지를 만드는 방법입니다.
방법은 간단히.. 이미지의 중심점을 잡고, 반지름을 구한 뒤 중심점에서 각 0도, 60도, 120도, 180도, 240도, 360도 위치의 점을 잇는 선을 그은 뒤 그에 해당하는 이미지만 뽑아내느 방법입니다.
이걸 활용하면 android에서 사용할 HexagonImageView도 만들어 볼 수 있겠죠.
코드는 아래와 같습니다.
private Bitmap getHexagonImage(Bitmap toTransform) {
Bitmap output = Bitmap.createBitmap(toTransform.getWidth(),
toTransform.getHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(output);
int radius = 0;
int width = toTransform.getWidth();
int height = toTransform.getHeight();
int centerX = width / 2;
int centerY = height / 2;
if (width >= height) {
radius = height / 2;
} else {
radius = width / 2;
}
Paint paint = new Paint();
final Rect rect = new Rect(0, 0, toTransform.getWidth(),
toTransform.getHeight());
Path path = new Path();
for (int i = 0; i < 6; i++) {
int posX = (int) (centerX + radius * Math.cos(Math.toRadians(i * 60 - 30)));
int posY = (int) (centerY + radius * Math.sin(Math.toRadians(i * 60 - 30)));
if (i == 0) {
path.moveTo(posX, posY);
} else {
path.lineTo(posX, posY);
}
}
path.close();
canvas.drawARGB(0, 0, 0, 0);
paint.setColor(Color.parseColor("#FFFFFF"));
canvas.drawPath(path, paint);
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
canvas.drawBitmap(toTransform, rect, rect, paint);
return output;
}
반응형
'Android' 카테고리의 다른 글
| [Android] Android 개발에서 Dagger2이용해보기. (1) | 2015.10.15 |
|---|---|
| [Android] Fragment에서 onActivityResult 결과 받기. (1) | 2015.10.02 |
| underline textview (0) | 2014.11.19 |
| [Android] Excution failed for task ':app:preDexDebug' troubleshooting. (0) | 2014.10.17 |
| [Android] MediaCodec 을 이용한 player 만들기. (6) | 2014.08.19 |