Android memiliki gaya dan tema yang memungkinkan Anda menyusun pengembangan antarmuka pengguna.
Mereka terdiri dari atribut yang menentukan desain elemen. Atribut dapat dibuat atau atribut yang sudah ada dapat digunakan. Atribut dapat diberi nilai, jenis yang ditentukan saat dibuat.
Contoh deklarasi atribut dari Android SDK:
<attr name="background" format="reference|color" />
catatan:
Referensi ke atribut lain melalui @[package:]type/name
struktur juga merupakan tipe.
Tema vs gaya
Tema dan gayanya sangat mirip, tetapi digunakan untuk tujuan yang berbeda.
Gaya menggabungkan atribut untuk widget tertentu. Dengan mengekstrak atribut ke gaya, atribut tersebut dapat dengan mudah digunakan dan dikelola di beberapa widget secara bersamaan.
Tema, pada gilirannya, mendefinisikan sekumpulan atribut yang bisa dirujuk dalam aplikasi.
Gaya dan tema dirancang untuk bekerja sama.
Misalnya, kami memiliki gaya dengan latar belakang tombol colorPrimary
dan warna teks colorSecondary
. Arti sebenarnya dari warna-warna ini diberikan dalam topik.
<?xml version="1.0" encoding="utf-8" ?>
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<style name="LightTheme" parent="YourAppTheme">
<item name="colorPrimary">#FFFFFF</item>
<item name="colorSecondary">#000000</item>
</style>
<style name="DarkTheme" parent="YourAppTheme">
<item name="colorPrimary">#000000</item>
<item name="colorSecondary">#FFFFFF</item>
</style>
<style name="Button.Primary" parent="Widget.MaterialComponents.Button">
<item name="android:background">?attr/colorPrimary</item>
<item name="android:textColor">?attr/colorSecondary</item>
</style>
</resources>
Saat perangkat masuk ke mode malam, aplikasi dapat beralih dari tema "terang" ke "gelap" dengan mengubah nilai sumber daya ini.
Tidak perlu mengubah gaya, karena gaya menggunakan nama semantik daripada sumber daya warna tertentu.
Jenis tautan dalam XML
Atribut android:background
dapat mengambil beberapa jenis:
android:background="@color/colorPrimary" android:background="?attr/colorPrimary"
@color/colorPrimary
- c colorPrimary
, <color name="colorPrimary">#FFFFFF<color>
, res/values/color.xml
.
:
- , , Β«nameΒ», XML-. , XML- <resources>
, .
, ?attr
- .
?attr/colorPrimary
colorPrimary
, :
<?xml version="1.0" encoding="utf-8" ?>
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<style name="YourAppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
</style>
</resources>
?attr
, .
, .
, , , .
@[package:]type/name
?[package:]type/name
package
- () , . - , .
type
- ()attr
?
.
name
- , .
? vs ?attr vs ?android:attr
, , ?android:attr/colorPrimary
, ?attr/colorPrimary
, ?colorPrimary
.
, Android SDK, android
, .
?
?attr
, (, AppCompat MaterialDesign), , .
Android SDK, , colorPrimary
.
, API.
Google Android :
-
Android styling: themes vs styles
Whatβs your textβs appearance?
Android Styling: themes overlay
Android Styling: prefer theme attributes
Gaya Android: atribut tema umum
Saya tetap merekomendasikan menonton video dari Android Dev Summit
2019. Tautan ke video