2012-07-16 60 views
1

如果我们继续重新启动应用程序,我就陷入了画布随机停止在屏幕上绘图的问题。Android Canvas随机停止在屏幕上绘图

我已经通过记录器检查过方法onDraw()正在调用的动作。但设备上的手指痕迹不可见。

任何帮助和建议表示赞赏。 欢呼

+1

[如何接受答](http://meta.stackexchange.com/a/65088) – Lucifer 2012-07-16 06:29:17

回答

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。 – 2012-07-16 07:10:06

+0

我是你的项目中,触摸事件类的一些缺少代码 – Android 2012-07-16 10:10:59