Je commence un nouveau projet, et jusqu'à présent, j'ai fait une application simple qui a une image qui est dessiné sur un Canvas
, que vous pouvez faire glisser autour de l'écran avec votre doigt. L'idée est de tirer beaucoup de choses sur ce Canvas
pour un jeu. Cependant, le glissement est extrêmement lent, tout en faisant glisser avec mon doigt l'écran met à jour l'image peut-être 2-3 fois par seconde. C'est très lent, donc je suppose que je le fais très mal (je suis sur un Nexus S).Existe-t-il une meilleure façon de créer un arrière-plan pouvant être déplacé?
J'ai seulement les barebones de l'application, juste un SurfaceView contenant un fil pour mettre à jour le Canvas
avec cette image. Voici le code:
// 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;
}