2012-01-20 13 views

Odpowiedz

49

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.

+3

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? –

+0

@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ś. –

+0

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. –

28

Drawable to coś, co można narysować. Na przykład. PNG, JPEG lub tak

+7

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'). –

+0

Pewnie, to moja wina. Miałem na myśli BitmapDrawable – barmaley

+0

Wydaje się mieć dobry punkt – neferpitou

10

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), tworzy NinePatchDrawable.

  • Lista Warstwa, A Drawable który zarządza szereg innych Drawable s. Są one rysowane w kolejności tablicowej, więc element z największym indeksem jest rysowany na górze, tworzy LayerDrawable.

  • 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), tworzy StateListDrawable.

  • Lista Poziom, Plik XML który definiuje Drawable który zarządza szereg alternatywnych Drawable S, każda przypisana maksymalną wartość liczbową, tworzy LevelListDrawable.

  • Transition rozciągliwej, Plik XML który definiuje Drawable które mogą Cross-Fade między dwoma Drawable zasobów, tworzy TransitionDrawable.

  • blat rozciągliwej, Plik XML który definiuje Drawable że wypustkami inny Drawable o określoną odległość. Jest to przydatne, gdy View potrzebuje tła, które jest mniejsze niż rzeczywiste ograniczenia widoku.

  • Klip rozciągliwej, Plik XML który definiuje Drawable że klipy inny Drawable na podstawie bieżącej wartości poziomu tego Drawable „s, tworzy ClipDrawable.

  • Skala rozciągliwej, Plik XML który definiuje Drawable który zmienia rozmiar innym Drawable na podstawie jego wartości obecnego poziomu, tworzy ScaleDrawable.

  • kształt rozciągliwej, plik XML który określa kształt geometryczny, w tym barwniki i gradientów tworzy ShapeDrawable.

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.

Powiązane problemy