Zrozumienie działania stylów Androida może być nieco kłopotliwe.
Postaram się wyjaśnić, jak podstawowy byłby przepływ pracy, na podstawie przykładu.
Załóżmy, że chcesz wiedzieć, jakie jest domyślne tło dla przycisków. Może to być zwykły kolor (mało prawdopodobny) lub wyciągany (istnieje wiele różnych typów elementów do rysowania).
Android ma motywy. Motyw w zasadzie definiuje, który styl jest stosowany do którego widgetu. Dlatego naszym pierwszym krokiem jest znalezienie domyślnego motywu Androida.
go znaleźć pod android-sdk\platforms\android-15\data\res\values\themes.xml
W tym pliku motywu, szukaj button
.
Znajdziesz coś takiego:
<!-- Button styles -->
<item name="buttonStyle">@android:style/Widget.Button</item>
Oznacza to, że temat dotyczy styl Widget.Button
do przycisków.
OK, teraz znajdź styl Widget.Button
.
Wszystko domyślny styl Android są zdefiniowane w pliku android-sdk\platforms\android-15\data\res\values\styles.xml
teraz szukać Widget.Button
Znajdziesz coś takiego:
<style name="Widget.Button">
<item name="android:background">@android:drawable/btn_default</item>
<item name="android:focusable">true</item>
<item name="android:clickable">true</item>
<item name="android:textAppearance">?android:attr/textAppearanceSmallInverse</item>
<item name="android:textColor">@android:color/primary_text_light</item>
<item name="android:gravity">center_vertical|center_horizontal</item>
</style>
Interesującą linii to:
<item name="android:background">@android:drawable/btn_default</item>
Oznacza to, że istnieje zestaw do pobrania o nazwie btn_default
jako tło przycisku.
Teraz musimy znaleźć plik o nazwie btn_default.*
w jednym z folderów do rysowania pod numerem android-sdk\platforms\android-15\data\res
.
Może to być obraz (bardzo mało prawdopodobny) lub plik XML, taki jak btn_default.xml
.
Po trochę poszukiwania można odnaleźć pliku android-sdk\platforms\android-15\data\res\drawable\btn_default.xml
Zawiera on mniej więcej tak:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_window_focused="false" android:state_enabled="true" android:drawable="@drawable/btn_default_normal" />
<item android:state_window_focused="false" android:state_enabled="false" android:drawable="@drawable/btn_default_normal_disable" />
<item android:state_pressed="true" android:drawable="@drawable/btn_default_pressed" />
<item android:state_focused="true" android:state_enabled="true" android:drawable="@drawable/btn_default_selected" />
<item android:state_enabled="true" android:drawable="@drawable/btn_default_normal" />
<item android:state_focused="true" android:drawable="@drawable/btn_default_normal_disable_focused" />
<item android:drawable="@drawable/btn_default_normal_disable" />
</selector>
Teraz trzeba zrozumieć, że jest to odkształcalne selektor (jeden z wielu rozciągliwych typów). Ten selektor wybiera różne tła, w zależności od stanu przycisków. Na przykład, jeśli przyciski są wciśnięte, ma inne tło.
Spójrzmy na stan domyślny.
<item android:state_enabled="true" android:drawable="@drawable/btn_default_normal" />
Dotyczy rozciągliwej nazwie btn_default_normal
.
Teraz musimy znaleźć to wyciągnięcie.
Znów musimy znaleźć plik o nazwie btn_default_normal.*
w jednym z folderów do rysowania pod numerem android-sdk\platforms\android-15\data\res
.
Może to być ponownie obraz lub plik XML, taki jak btn_default_normal.xml
.
Znajdziesz wiele plików o nazwie "btn_default_normal.9.png" w różnych folderach do rysowania dla różnych rozdzielczości.
:) Teraz już wiesz, że btn_default_normal.9.png
jest ustawiony jako tło przycisku.
Dzięki! bardzo dobrze wyjaśnione. – Zombie
Wow, to była świetna odpowiedź :) – theapache64