Я начинаю новый проект, и до сих пор я создал простое приложение с изображением, нарисованным на Canvas
, которое вы можете перетаскивать по экрану пальцем. Идея состоит в том, чтобы нарисовать множество вещей на этом Canvas
для игры. Однако перетаскивание является чрезвычайно медленным, при перетаскивании пальцем экран обновляет изображение, возможно, 2-3 раза в секунду. Это очень заметно медленно, поэтому я предполагаю, что я делаю это очень неправильно (я на Nexus S).
У меня есть только очень скелеты приложения, только SurfaceView, содержащий поток для обновления Canvas
этим одним изображением. Вот код:
// In GameThread
private void doDraw(Canvas c) {
if(canvasInit){
Bitmap background = BitmapFactory.decodeResource(mContext.getResources(), R.drawable.bg);
c.drawBitmap(background, offsetX, offsetY, null);
}
}
public boolean doTouchDown(MotionEvent event) {
if(drag == false){
//initialize drag
startX = event.getX();
startY = event.getY();
drag = true;
}else{
//caluclate new position
offsetX = Math.max(Math.min(0, offsetX + (event.getX() - startX)), mCanvasWidth - BACKGROUND_WIDTH);
offsetY = Math.max(Math.min(0, offsetY + (event.getY() - startY)), mCanvasHeight- BACKGROUND_HEIGHT);
startX = event.getX();
startY = event.getY();
}
return true;
}
public boolean doTouchUp(MotionEvent event){
drag = false;
return true;
}