[Android] Hexagon Image 만들기.
Android2014. 12. 23. 10:21
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 |