2012-07-16 5 views
1

응용 프로그램을 계속 다시 시작하면 캔버스가 무작위로 화면에 그리기를 멈추는 문제가 있습니다.안드로이드 캔버스 화면에서 무작위로 그림 그리기를 멈 춥니 다

로거를 통해 onDraw() 메 시지가 작동 중임을 확인했습니다. 하지만 장치의 내 손가락 추적은 보이지 않습니다.

감사의 말. 환호

당신이 화면 라인 이상에 그리기에이 코드를 시도 할 수 있습니다
+1

[대답을 수락하는 방법 (http://meta.stackexchange.com/a/65088) – Lucifer

답변

1

......

패키지 com.kk.demo;

import android.app.Activity; 
import android.graphics.Bitmap; 
import android.graphics.Canvas; 
import android.graphics.Color; 
import android.graphics.Matrix; 
import android.graphics.Paint; 
import android.graphics.PointF; 
import android.os.Bundle; 
import android.util.FloatMath; 
import android.util.Log; 
import android.view.Display; 
import android.view.MotionEvent; 
import android.view.View; 
import android.view.View.OnTouchListener; 
import android.widget.ImageView; 

public class ZoomDemoActivity extends Activity implements OnTouchListener { 
    ImageView imageView; 
     Bitmap bitmap; 
     Canvas canvas; 
     Paint paint; 

     float downx = 0,downy = 0,upx = 0,upy = 0; 

     @Override 
     public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     imageView = (ImageView) this.findViewById(R.id.imageView1); 
     Display currentDisplay = getWindowManager().getDefaultDisplay(); 
     float dw = currentDisplay.getWidth(); 
     float 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 = event.getX(); 
      downy = event.getY(); 
      break; 
     case MotionEvent.ACTION_MOVE: 
      upx = event.getX(); 
      upy = event.getY(); 
      canvas.drawLine(downx, downy, upx, upy, paint); 
      imageView.invalidate(); 
      downx = upx; 
      downy = upy; 
      break; 
     case MotionEvent.ACTION_UP: 
      upx = event.getX(); 
      upy = event.getY(); 
      canvas.drawLine(downx, downy, upx, upy, paint); 
      imageView.invalidate(); 
      break; 
     case MotionEvent.ACTION_CANCEL: 
      break; 
     default: 
      break; 
     } 
     return true; 
     } 
    } 
+0

이 내 코드가 정확히 무엇이다, 터치가 보이지 않을 때 모든 것이 어떤 임의의 시간을 제외하고 잘 작동 그러나 디버거는 매번 ontouch 안에서 나를 데려 간다. –

+0

내게 당신이 프로젝트에있어, 터치 이벤트 클래스 일부 누락 된 코드 – Android

관련 문제