그리기 객체 예제를 테스트하고 있는 중인데요.

실제로 터치하는 부분과 그리는 부분의 차이가 있네요.

예를들어 터치하는 부분이 (10, 30) 이라면 실제로 그려지는 부분은(10, 60)이 되네요. 


여러군데 검색해봐도 찾기가 너무 힘들어서 이렇게 글과 소스코드 올립니다. 

해결책좀 알려주시면 감사하겠습니다.






package com.apress.proandroidmedia.ch4.simplefingerdraw;


import android.app.Activity;

import android.graphics.Bitmap;

import android.graphics.Canvas;

import android.graphics.Color;

import android.graphics.Paint;

import android.os.Bundle;

import android.view.Display;

import android.view.MotionEvent;

import android.view.View;

import android.view.View.OnTouchListener;

import android.widget.ImageView;


public class SimpleFingerDraw extends Activity implements OnTouchListener {


ImageView imageView;

Bitmap bitmap;

Canvas canvas;

Paint paint;


int downx = 0;

int downy = 0;

int upx = 0;

int upy = 0;


@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);


imageView = (ImageView) this.findViewById(R.id.ImageView);


Display currentDisplay = getWindowManager().getDefaultDisplay();

int dw = currentDisplay.getWidth();

int dh = currentDisplay.getHeight();


bitmap = Bitmap.createBitmap((int) dw, (int) dh,

Bitmap.Config.ARGB_8888);

canvas = new Canvas(bitmap);

paint = new Paint();

paint.setColor(Color.GREEN);

imageView.setImageBitmap(bitmap);


imageView.setOnTouchListener(this);

}


public boolean onTouch(View v, MotionEvent event) {

int action = event.getAction();

switch (action) {

case MotionEvent.ACTION_DOWN:

downx = (int) event.getX();

downy = (int) event.getY();

break;

case MotionEvent.ACTION_MOVE:

upx = (int) event.getX();

upy = (int) event.getY();

canvas.drawLine(downx, downy, upx, upy, paint);

imageView.invalidate();

downx = upx;

downy = upy;

break;

case MotionEvent.ACTION_UP:

upx = (int) event.getX();

upy = (int) event.getY();

canvas.drawLine(downx, downy, upx, upy, paint);

imageView.invalidate();

break;

case MotionEvent.ACTION_CANCEL:

break;

default:

break;

}

return true;

}

}