0
내가 그리는 응용 프로그램을 개발하고있다, 그것은 다음 코드가 :멀티 스레딩을 사용하여 Canvas에서 그리는 방법은 무엇입니까?
public class PainterView extends View implements DrawingListener {
private Context context;
private Painter painter;
private Bitmap background;
private Bitmap bitmap;
private Paint bitmapPaint;
private Path path;
private Paint paint;
private float x;
private float y;
public PainterView(Context context, Painter painter) {
super(context);
this.context = context;
this.painter = painter;
}
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
}
@Override
protected void onDraw(Canvas canvas) {
if (bitmap != null) {
canvas.drawBitmap(background, 0, 0, bitmapPaint);
canvas.drawBitmap(bitmap, 0, 0, bitmapPaint);
canvas.drawPath(path, paint);
}
}
@Override
public boolean onTouchEvent(MotionEvent event) {
x = event.getX();
y = event.getY();
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
painter.touchStart(x, y);
break;
case MotionEvent.ACTION_MOVE:
painter.touchMove(x, y);
break;
case MotionEvent.ACTION_UP:
painter.touchUp();
break;
}
return true;
}
@Override
public void onPictureUpdate(Bitmap background, Bitmap bitmap, Paint bitmapPaint, Path path, Paint paint) {
this.background=background;
this.bitmap = bitmap;
this.bitmapPaint = bitmapPaint;
this.path = path;
this.paint = paint;
invalidate();
}
public void setPainter(Painter painter) {
this.painter = painter;
}
}
이 코드는 모든 터치 이벤트를 잡는다는 모델이 이벤트를 보내,이 좌표를 저장하고 도면에 대해 볼 수있는 비트 맵을 보내 .
나는이 코드를 사용하고 있지만 잘 작동하고 있지만 내 클라이언트는 그림이 매끄러운 부분이 아니라는 것을 나에게 알려줍니다. 그래서 그것을 위해 멀티 쓰레딩을 사용해야합니다. 제발, 어떻게 할 수 있니? 또는 다른 방법을 사용하여 생산성을 향상시킬 수 있습니까?