我现在遇到一个问题,就是当执行OnTouchEvent()时间的move时,发现传递的点并不能全部画出来,只能画出来一个点,代码如下,亟待解决!!谢谢!!
public class MyLayout extends RelativeLayout { private Paint paint;
private float screenW,screenH;
private float cx;
private float cy;
private int radius = 32;
private float a;
private Bitmap bitmap;
public MyLayout(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub

setWillNotDraw(false);
bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.circel);
paint = new Paint();
paint.setAntiAlias(true);
    paint.setStyle(Paint.Style.STROKE);
    paint.setStrokeWidth(2);
    paint.setColor(Color.WHITE);
} @Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
revise();               // 修正
canvas.drawBitmap(bitmap, cx, cy, paint);
Log.v("rc", "onDraw  "+bitmap);
} @Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
// TODO Auto-generated method stub
super.onLayout(changed, l, t, r, b);
screenW = r-l;
screenH = (b-t);
cx = screenW/2;
cy = screenH/2;
// Log.v("rc", "onLayout:"+cx+";"+cy);
} private void revise() {
Log.i("rc", "cx:"+cx);
if (cx <= radius) {
cx = radius;
} else if (cx >= (screenW - 2*radius)) {
cx = screenW - 2*radius;
}  

if (cy <= radius) {
cy = radius;
} else if (cy >= (screenH - 2*radius)) {
cy = screenH - 2*radius;
}

} @Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
          
  cy = (int) event.getX();
cy = (int) event.getY();
Log.v("rc", "cx down:"+event.getX());
postInvalidate();
break;
case MotionEvent.ACTION_MOVE:

cx = (int) event.getX();
cy = (int) event.getY();
Log.v("rc", "cx:  move"+event.getX());
postInvalidate();
break;
case MotionEvent.ACTION_UP:
          
cx = (int) event.getX();
cy = (int) event.getY();
Log.v("rc", "cx up:"+event.getX());
postInvalidate();
break;
} return true;
}