/ / Tworzenie tablicy obrazów na płótnie - Android, tablice, lista arraylów, Android-Canvas

Tworzenie tablicy obrazów na płótnie - android, tablice, lista tablic, płótno z Androidem

Próbuję stworzyć szereg obrazów, które można narysować na płótnie. Oto co mam:

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

Następnie próbuję uzyskać dostęp do takich obrazów z mojej metody 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);
}


}

Ale dostaję błąd, mówiąc, że moje argumenty sąnie dotyczy mojej canvas.drawbitmap. Czy ktoś wie, jak to zrobić? Wszędzie szukałem wyjaśnienia, jak to zrobić i nie mogę tego nigdzie znaleźć.

EDYCJA: W ten sposób udało mi się wydrukować 3 obrazy w różnych punktach na ekranie:

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

Odpowiedzi:

1 dla odpowiedzi № 1

Co robisz, to początkowo dodajesz kilka liczby całkowite do ArrayList, a następnie próbujesz zapętlić tę ArrayList i narysować mapę bitową, używając zasobu określonego przez tę liczbę całkowitą. Problem polega na tym, że pierwszy argument do drawBitmap metoda w Canvas klasa musi być albo całkowitą tablicą kolorów, albo zasobem Bitmapy. Nie tylko liczba całkowita, wskazująca na jeden. Po więcej informacji, sprawdź dokumentację.

Aby uzyskać określony zasób według ID jako Bitmapy, musisz to zrobić:

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

Lub w twoim przypadku twoja pętla musi wyglądać tak:

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 dla odpowiedzi nr 2

Lol! Czek canvas.drawBitmap Pierwszy parametr to obiekt Bitmap, podczas gdy masz tylko liczby całkowite wskazujące na zasób.

Możesz użyć:

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