안드로이드에서 이미지를 회전하는 방법은 여러가지가 있다.
하지만, 네이버에서 나온 대부분의 방법은
imgBoss2=BitmapFactory.decodeResource(.....);
imgBoss2=Bitmap.createScaledBitmap(....);
이것을 사용하는데,, 이것은 휴대폰으로 하여금 새로운 객체를 생성하기때문에 부담을 줄 수 밖에 없다.
그래서 이미지 파일을 새로 만드는 것이 아닌 구성요소인 Matrix를 새로 리셋하여
회전시키고 그것을 나중에 적용하는 방법에 대해서 알아 본다.
그래픽스 시스템에 대해서 기본적으로 배우면 Matrix가 왜 회전과 이동에 관여 하는지 알 수 있다.
궁금하신분은 컴퓨터 그래픽스 Matrix 에서 Transformation 파트를 찾아 보도록 한다.
나는 아래의 소스는 게임을 만드는 소스중 같은이미지가 360도 돌아가면서 이동하는 것이다.
코드가 너무 길어서 정리해서 써놓으면
Matrix matrix = new Matrix();
matrix.reset();
centerY=(2*y+height)/2;
//이것은 필요하신분만 사용하도록 하자 이것은 특정위치로 이미지를 이동시킨다.
//다시말하지만 이것또한 좌상단부터 아래와 오른쪽으로 그림을 그리게 된다.
matrix.setTranslate(x,y);
//이부분이 회전을 담당하는 부분이다. 매개변수는 처음부터 이미지, 그리고 x,y축만큼 회전이다.
//아래와 같이하면 제자리에서 회전하게 된다.
matrix.postRotate(imgRotate, centerX, centerY);
//그뒤에 그림을 그려주면 완성.
canvas.drawBitmap(imgBoss, matrix, null);
안드로이드에서 이미지는 매우 민감하다. 휴대폰이 뜨거워지거나 렉이 걸릴 수 있기 때문이다.
사진정도 가볍게 회전하는 것은 문제가 아니지만,, ,자주 회전해야 많은 이미지를 회전시켜야한다면
위와 같은 방법으로 메트릭스를 사용해야 할 것 이다.