마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

이미지를 눌렀을때 이미지가 회전하게 만들려고 하는데요..

0 추천
package com.example.test01;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.graphics.Paint.Style;
import android.graphics.Rect;
import android.os.Handler;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Toast;

public class MyView extends View{
	Bitmap Img;
	int width,height;
	int rectL;
	Rect rect;
	Paint rectPaint ;
	Context context;
	int X,Y;
	
	public MyView(Context context) {
		  super(context);
		  this.context=context;
		  init();//초기화 하기
		  //핸들러를 호출해서 화면이 주기적으로 갱신되도록 한다.
		  handler.sendEmptyMessage(0);
		 }
	 public void init(){
		  //화면의 폭과 높이 얻어오기
		  width=480;
		  height=800;
		  //원본 이미지 읽어오기
		  Img=BitmapFactory.decodeResource
		      (getResources(), R.drawable.tiffany);
		  rectL = width;
		  rectPaint=new Paint();
		  rectPaint.setAlpha(0);
		  rectPaint.setStyle(Style.FILL);
	 }
	 
	 @Override
	 protected void onDraw(Canvas canvas){
		 canvas.drawBitmap(Img,0,0,null);
		 rect=new Rect(0,0,0+width, 0+height);
		 canvas.drawRect(rect, rectPaint);
	}
	 
	 @Override
	 public boolean onTouchEvent(MotionEvent event) {
	        if (event.getAction() == MotionEvent.ACTION_DOWN) {
	            int x = (int) event.getX();
	            int y = (int) event.getY();

	            if (rect.contains(x, y) == true)
	                imgRotate(Img);
	            else
	                Toast.makeText(getContext(), "Miss", Toast.LENGTH_SHORT).show();
	        }
	        return false;
	    }
	 private Bitmap imgRotate(Bitmap bmp){
			int width = bmp.getWidth(); 
			int height = bmp.getHeight(); 

			Matrix matrix = new Matrix(); 
			matrix.postRotate(180); 

			Bitmap resizedBitmap = Bitmap.createBitmap(bmp, 0, 0, width, height, matrix, true); 
			bmp.recycle();

			return resizedBitmap;
	}
	 Handler handler=new Handler(){
		  public void handleMessage(android.os.Message msg) {
		   //화면 갱신 
		   invalidate();
		   handler.sendEmptyMessageDelayed(0, 10);
		  }
	 };
	 
}

이미지를 터치할때 이미지가 회전하게 만들어주기 위해서

이미지를 그리고 투명한 사각형을 그려서 터치영역을 설정해 주었구요

사각형 영역을 터치시 이미지가 돌아가도록 함수를 넣었는데

터치시 오류가나면서 앱이 꺼집니다..

어디를 수정해야할지 부탁드립니다

카카메카 (240 포인트) 님이 2015년 11월 3일 질문
imgRotate 에서 recycle() 하고 새로 만들 비트맵을 리턴하는데 받는 처리가 없네요

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...