Wyszukałem go, ale nie mogłem znaleźć żadnego artykułu opisującego różnicę między bitmapą a rysowaniem w systemie Android.Jaka jest różnica między bitmapą i Drawable w systemie Android?
Odpowiedz
Bitmapa jest reprezentacją obrazu bitmapowego (coś podobnego do java.awt.Image). Drawable to abstrakcja "czegoś, co można wyciągnąć". Może to być bitmapa (zawinięta jako BitmapDrawable
), ale może również być jednolity kolor, kolekcja innych obiektów ciągnionych lub dowolna liczba innych struktur.
Większość frameworków interfejsu użytkownika systemu Android lubi pracować z obiektami Drawable, a nie z obiektami Bitmap. Widok może akceptować dowolne Szuflady jako tło. ImageView może wyświetlać pierwszy plan Drawable. Obrazy przechowywane jako zasoby są ładowane jako obiekty do rysowania.
jeśli bitmapDrawable zawija bitmapę, co by się stało, gdybyśmy zadzwonili do recycle() na mapa bitowa w nim? także, co robi recycle() dla API11 i nowszych? –
@androiddeveloper - Nie jestem pewien, ale to nie będzie nic dobrego. Gdy bitmapa jest opakowana przez BitmapDrawable, drawable "jest właścicielem" bitmapy i ma zarządzać jej życiem. Jeśli nazwiesz 'recycle()', ingerujesz w tę relację. Najlepiej, że losowanie niczego nie pociągnie; bardziej prawdopodobne jest, że jakiś wyjątek zostanie rzucony później. Według [the docs] (http://developer.android.com/reference/android/graphics/Bitmap.html#recycle%28%29), 'recycle()' z API11 + robi to samo co zawsze: pozwala uwolnić natywne piksele, gdy tylko wiesz, że skończyłeś. –
Mówią tam, że uwalnia on natywną pamięć bitmapy, ale wiemy, że od API 11 wszystko związane z bitmapą (włączając w to jej surowe dane) jest wewnątrz sterty, więc recykling wydaje się dziwnym zadaniem. –
Drawable to coś, co można narysować. Na przykład. PNG, JPEG lub tak
A [Bitmap] (http://developer.android.com/reference/android/graphics/Bitmap.html) ('android.graphics.Bitmap') nie jest podklasą [Drawable] (http: // developer. android.com/reference/android/graphics/drawable/Drawable.html) ('android.graphics.drawable.Drawable'). –
Pewnie, to moja wina. Miałem na myśli BitmapDrawable – barmaley
Wydaje się mieć dobry punkt – neferpitou
rozciągliwej zasobów
: co jest obraz, jak to specyficzny rodzaj rozciągliwej - układ, grafika wektorowa (linia, okrąg), czcionka, obraz i tak dalej
Bitmap Zasób Drawable
jest ogólną koncepcją grafiki, którą można narysować na ekranie i którą można pobrać przy użyciu interfejsów API, takich jak getDrawable(int)
lub zastosować do innego zasobu XML z atrybutami takimi jak android:drawable
i android:icon
. Istnieje kilka różnych typów kanału alfa:
bitmapy pliku, bitmapy pliku graficznego (.png, .jpg lub .gif), tworzy
BitmapDrawable
.Nine-patch File, plik
PNG
z rozciągliwych regionów pozwalają zmiana rozmiaru obrazu na podstawie zawartości (.9.png), tworzyNinePatchDrawable
.Lista Warstwa, A
Drawable
który zarządza szereg innychDrawable
s. Są one rysowane w kolejności tablicowej, więc element z największym indeksem jest rysowany na górze, tworzyLayerDrawable
.Lista State, Plik
XML
która odwołuje różne grafiki bitmapowej dla różnych stanów (na przykład, aby użyć inny obraz, gdy przycisk jest wciśnięty), tworzyStateListDrawable
.Lista Poziom, Plik
XML
który definiujeDrawable
który zarządza szereg alternatywnychDrawable
S, każda przypisana maksymalną wartość liczbową, tworzyLevelListDrawable
.Transition rozciągliwej, Plik
XML
który definiujeDrawable
które mogą Cross-Fade między dwomaDrawable
zasobów, tworzyTransitionDrawable
.blat rozciągliwej, Plik
XML
który definiujeDrawable
że wypustkami innyDrawable
o określoną odległość. Jest to przydatne, gdyView
potrzebuje tła, które jest mniejsze niż rzeczywiste ograniczenia widoku.Klip rozciągliwej, Plik
XML
który definiujeDrawable
że klipy innyDrawable
na podstawie bieżącej wartości poziomu tegoDrawable
„s, tworzyClipDrawable
.Skala rozciągliwej, Plik
XML
który definiujeDrawable
który zmienia rozmiar innymDrawable
na podstawie jego wartości obecnego poziomu, tworzyScaleDrawable
.kształt rozciągliwej, plik
XML
który określa kształt geometryczny, w tym barwniki i gradientów tworzyShapeDrawable
.
Zobacz także dokument o zasobach animacji, aby dowiedzieć się, jak utworzyć AnimationDrawable
.
Uwaga: zasób kolorów może być również używany jako Ddrawable
w XML
. Na przykład podczas tworzenia StateListDrawable
można odwoływać się do zasobu koloru dla atrybutu android:drawable
().
bitmapy
Bitmapa obrazu. Android obsługuje pliki bitmap w trzech formatach: .png (preferowane), .jpg (dopuszczalne), .gif (odradzane).
Można odwoływać się bezpośrednio do pliku bitmapy, używając nazwy pliku jako identyfikatora zasobu lub utworzyć identyfikator zasobu aliasu w formacie XML.
Uwaga: Pliki bitmap mogą być automatycznie optymalizowane przy bezstratnej kompresji obrazu przez narzędzie aapt w trakcie procesu kompilacji. Na przykład prawdziwy PNG, który nie wymaga więcej niż 256 kolorów, może zostać przekształcony w 8-bitowy plik PNG z paletą kolorów. Spowoduje to uzyskanie obrazu o jednakowej jakości, ale wymagającego mniej pamięci. Należy więc pamiętać, że pliki binarne obrazu umieszczone w tym katalogu mogą się zmieniać podczas kompilacji. Jeśli planujesz odczytać obraz jako strumień bitów, aby przekonwertować go na mapę bitową, umieść obrazy w folderze res/raw/
, gdzie nie będą one optymalizowane.
- 1. Jaka jest różnica między hasFocus() i isFocused() w systemie Android?
- 2. Jaka jest różnica między układem a kontenerem w systemie Android?
- 3. Jaka jest różnica między @android a android:
- 4. jaka jest różnica między ~/i ~ w systemie Linux?
- 5. Jaka jest różnica między _chdir i SetCurrentDirectory w systemie Windows?
- 6. Jaka jest różnica między $ @ i $ * w systemie UNIX?
- 7. Jaka jest różnica między? : i ||
- 8. Jaka jest różnica między $ i $$?
- 9. Jaka jest różnica między -anydpi i -nodpi?
- 10. Jaka jest różnica między developer.paypal.com i x.com?
- 11. Jaka jest różnica między SQLite i SQL
- 12. Jaka jest różnica między długim i długim w kodzie android?
- 13. jaka jest różnica między installshield i windowsinstaller
- 14. Jaka jest różnica między getMeasuredHeight i getHeight
- 15. Jaka jest różnica między = i: = w mysql?
- 16. Jaka jest różnica między! = I =! w Javie?
- 17. Jaka jest różnica między 'i "w PHP
- 18. Jaka jest różnica między! i !! w yaml?
- 19. jaka jest różnica między @ i @@ w module?
- 20. Jaka jest różnica między * i. * W Matlab?
- 21. Jaka jest różnica między | i || w MATLAB?
- 22. Jaka jest różnica między * i * | * w CSS?
- 23. Jaka jest różnica między getSupportFragmentManager() i getChildFragmentManager()?
- 24. Jaka jest różnica między metodami invalid() i postInvalidate() systemu Android?
- 25. Jaka jest różnica między Androidem: layout_width i Android: szerokość
- 26. Jaka jest różnica między rozszerzeniem aplikacji i jej przedłużeniem w systemie Android?
- 27. Jaka jest różnica między czujnikami "gravity" i "acceleration" w systemie Android?
- 28. Jaka jest różnica między System.Windows.Controls.Control i System.Windows.Forms.Control?
- 29. Jaka jest różnica między asersem i static_assert?
- 30. Jaka jest różnica między PropertyChangeListener i VetoableChangeListener?
To rozwiązanie powinno być w stanie odpowiedzieć na twoje pytania: [rozwiązanie] (http://stackoverflow.com/a/5877202/813207) – Jrom