Actuellement, j'ai une classe qui dessine dynamiquement un ensemble de carrés en fonction du contenu d'un fichier sqlite. Comme les données sont assez volumineuses, le dessin est plusieurs fois plus grand que l'écran. J'ai lu beaucoup de méthodes proposées pour le faire et je ne suis pas sûr de la meilleure approche. Comme je ne changerai pas l'image après l'avoir rendu (il suffit de la restituer dynamiquement au redémarrage), la première réponse listée here semble être la meilleure, mais je ne comprends pas très bien comment procéder.Comment créer une grande image que l'on peut faire défiler
Si je comprends bien I:
- créer une image bitmap,
- créer ma toile (qui est plus grande que la résolution de l'écran)
- saisir le bitmap mis en cache et
- rendre le bitmap par rapport La toile.
Mais je manque de connaissances pour que cela se produise dans mon code existant. Mon code existant crée simplement une très grande toile (je ne définis pas les limites, je commence juste à dessiner). Ma principale classe ressemble à ceci:
package com.example.drawdemo;
import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
public class DrawDemo extends Activity {
DrawView drawView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
drawView = new DrawView(this);
drawView.setBackgroundColor(Color.WHITE);
setContentView(drawView);
}
}
Et quelque chose de classe drawView comme ceci:
public class DrawView extends View {
public DrawView(Context context) {
super(context);
}
@Override
public void onDraw(Canvas canvas) {
//LOTS OF CODE HERE to figure out how to render rectangles through loops
// similar to lines like this
canvas.drawRect(xStart, rectYPointer, xEnd, rectYPointer+rectSize, paint);
// or this
canvas.drawText(String.valueOf(rectSize), 130, rectYPointer*2, paint);
}
}
est l'approche que je prends la bonne approche pour me permettre de faire défiler vers le bas et voir cette grande image est plus grand que l'écran android? Si oui, comment puis-je migrer mon code pour me conformer à l'approche indiquée dans la réponse? Je crois que c'est la bonne méthode?