/ / Création d'un tableau d'images sur une toile - Android, tableaux, liste de lecture, android-canvas

Création d'un tableau d'images sur une toile - Android, tableaux, liste de lecture, android-canvas

J'essaie de créer un tableau d'images pouvant être dessinées sur une toile. Voici ce que j'ai

List<Integer> imageHolder = new ArrayList<Integer>();
imageHolder.add((int)R.drawable.bus_1);
imageHolder.add((int)R.drawable.bus_2);
imageHolder.add((int)R.drawable.bus_3);

Ensuite, j'essaie d'accéder aux images comme celle-ci à partir de ma méthode onDraw:

protected void onDraw(Canvas canvas) {
canvas.drawColor(Color.BLACK);


for (int i = 0; i < imageHolder.size(); i++){


canvas.drawBitmap(imageHolder.get(i), 0, 0, null);
}


}

Mais je reçois une erreur en disant que mes arguments sontnon applicable pour mon canvas.drawbitmap. Est-ce que quelqu'un sait comment faire cela? J'ai cherché partout une explication sur la façon de faire cela et je ne peux pas le trouver nulle part.

EDIT: C’est ainsi que j’ai réussi à imprimer les 3 images en différents points de l’écran:

for (int i = 0; i < imageHolder.size(); i++) {
bMap = BitmapFactory.decodeResource(res, imageHolder.get(0));
canvas.drawBitmap(bMap, 100, 100, null);
bMap2 = BitmapFactory.decodeResource(res, imageHolder.get(1));
canvas.drawBitmap(bMap2, 500, 100, null);
bMap3 = BitmapFactory.decodeResource(res, imageHolder.get(2));
canvas.drawBitmap(bMap3, 900, 100, null);
}

Réponses:

1 pour la réponse № 1

Ce que vous faites est que vous ajoutez initialement un tas de entiers dans une ArrayList, puis vous essayez de parcourir cette ArrayList et de dessiner un bitmap en utilisant une ressource identifiée par cet entier. Le problème est que le premier argument de la drawBitmap méthode dans le Canvas La classe doit être soit un tableau entier de couleurs, soit une ressource Bitmap. Pas simplement un entier, pointant vers un. Pour plus d'informations, vérifier la documentation.

Pour obtenir une ressource spécifique par ID en tant que Bitmap, vous devez procéder comme suit:

Bitmap bMap = BitmapFactory.decodeResource(getResources(), R.drawable.your_drawable_id);

Ou dans votre cas, votre boucle doit ressembler à ceci:

Resources res = getResources(); // Cache them
Bitmap bMap;
for (int i = 0; i < imageHolder.size(); i++){
bMap = BitmapFactory.decodeResource(res, imageHolder.get(i));
canvas.drawBitmap(bMap, 0, 0, null);
}

0 pour la réponse № 2

Lol! Vérifier canvas.drawBitmap Le premier paramètre est un objet Bitmap, alors que vous ne disposez que des entiers qui pointent vers la ressource.

Vous pouvez utiliser:

canvas.drawBitmap(BitmapFactory.decodeResource(getContext().getResources(), imageHolder.get(i)), 0, 0, null);