Właśnie napisałem się artykuł dla tego. Chciałbym móc odpowiedzieć na twoje pytanie.
https://plus.google.com/112740367348600290235/posts/VNAfFLDcKrw
ImageView
posiada 4 interfejsy API, aby określić obraz. Który użyć? Jaka jest różnica?
- setImageDrawable (rozciągliwej odkształcalne)
- setImageBitmap (bm bitmapy)
- setImageResource (Int pozostałościowych)
- setImageURI URI (URI)
ImageView
, nazwą, jest używany do wyświetlić obraz. Ale czym jest obraz? A Bitmap
jest obrazem, który nie jest trudny do zrozumienia i do tego celu używamy setImageBitmap
. Jednak wewnętrznie, ImageView
ma-Drawable
, ale nie Bitmap
i to jest to, co dla setImageDrawable
. Po wywołaniu setImageBitmap
wewnętrznie najpierw bitmapa zostanie opakowana do BitmapDrawable
, która jest IS-A Drawable
, a następnie wywołanie setImageDrawable
.
Oto kod.
public void setImageBitmap(Bitmap bm) {
setImageDrawable(new BitmapDrawable(mContext.getResources(), bm));
}
A co z API 3 i 4?
Powinieneś już wiedzieć, że to jest kilka sposobów tworzenia mapy bitowej: ze ścieżki do pliku, ze strumienia wejściowego, z Uri lub z pliku zasobów.
BitmapFactory.decodeFile(String pathName)
BitmapFactory.decodeStream(Inputstream)
BitmapFactory.decodeResource(Resource res, int id)
BitmapFactory.decodeByteArray(byte[] data)
Zdając sobie sprawę z tego, że jest łatwy do zrozumienia setImageResource
/setImageUri
jest tylko samo jak setImageBitmap
.
Podsumowując, setImageDrawable
jest prymitywną funkcją, na której polegają inne interfejsy API. Pozostałe 3 to tylko metody pomocnicze, dzięki którym piszesz mniej kodu.
Ponadto bardzo ważne jest, aby pamiętać, że ImageView
rzeczywiście ma-a Drawable
, który niekoniecznie musi być BitmapDrawable
! Możesz ustawić dowolny Drawable
w widoku obrazu.
Poza ustawianiem Drawable
za pomocą interfejsu API języka Java można również użyć atrybucji XML do ustawienia źródła Drawable
dla ImageView
. Zobacz przykład poniżej. Zwróć uwagę, że kształtem może być plik obrazu (.png, .jpg, .bmp) lub plik xml.
Myślę, że nie ma różnicy w tych konkretnych dwóch przykładach: –