/ / Erstellen eines Arrays von Bildern auf einer Leinwand - Android, Arrays, Arrayliste und Android-Canvas

Ein Array von Bildern auf einer Leinwand erstellen - Android, Arrays, Arraylist, Android-Canvas

Ich versuche, eine Reihe von Bildern zu erstellen, die auf einer Leinwand gezeichnet werden können. Das ist was ich habe:

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);

Dann versuche ich, auf die Bilder über meine onDraw-Methode wie folgt zuzugreifen:

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);
}


}

Aber ich bekomme eine Fehlermeldung, dass meine Argumente sindnicht zutreffend für meine canvas.drawbitmap. Weiß jemand, wie das geht? Ich habe überall nach einer Erklärung gesucht, wie das geht, und ich finde es nirgendwo.

BEARBEITEN: So habe ich es geschafft, die 3 Bilder an verschiedenen Stellen auf dem Bildschirm auszudrucken:

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);
}

Antworten:

1 für die Antwort № 1

Was Sie tun, ist, dass Sie zunächst eine Menge hinzufügen ganze Zahlen zu einer ArrayList und dann versuchen Sie, diese ArrayList durchzugehen und eine Bitmap mit einer durch diese Ganzzahl angegebenen Ressource zu zeichnen Das Problem ist, dass das erste Argument dazu drawBitmap Methode in der Canvas class muss entweder ein ganzzahliges Array von Farben oder eine Bitmap-Ressource sein. Nicht nur eine ganze Zahl, die auf eine zeigt. Für mehr Informationen, Überprüfen Sie die Dokumentation.

Um eine bestimmte Ressource nach ID als Bitmap zu erhalten, müssen Sie Folgendes tun:

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

Oder in Ihrem Fall muss Ihre Schleife so aussehen:

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 für die Antwort № 2

Lol! Prüfen canvas.drawBitmap Der erste Parameter ist ein Bitmap-Objekt, während Sie nur die ganzen Zahlen haben, die auf die Ressource zeigen.

Sie können verwenden:

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