Download - Themes and Styles in Android
Styles and Themes
- presentation -
by Mihaela Calinescu & Emilia Dobrin
CUPRINS
• Styles
o Ce reprezintă
o Definire şi moştenire
o Proprietăţi
• Themes
o Ce reprezintă
o Declarare, moştenire
o Setarea temei
• Exemple
Styles
• Ce reprezintă un style in Android?
Un style este o colecţie de proprietăţi care
specifică aspectul si formatul unui View sau
ale unei ferestre. De exemplu un style poate
specifica proprietăţi precum :
- height
- padding
- font color
- font size
- background color
- si multe altele.
• Cum definim şi cum folosim un
style?
Un style este definit într-un XML resource care
este diferit de XML-ul care specifică layout-ul.
Acesta te ajută să separi design-ul de
conţinut (analog css-ului - cascade
spreadsheet- în web design)
De exemplu, folosind un style putem lua acest
XML layout
pe care îl putem transforma în
Pentru a crea un set se stiluri, se salvează un
XML file în folderul res/values/ din proiect.
Root node-ul fisierului .xml creat va fi
<resources>. It's a must!
Un exemplu de fişier cu un singur style ar fi
următorul:
Style properties
De exemplu, unul dintre atribute este android:inputType.
Aşa că, acolo unde in mod normal ai poziţiona acest
atribut într-un element <EditText>:
am putea crea un style pentru EditText element care să
includă acest atribut :
deci xml-ul nostru poate acum implementa acest style:
Themes
Ce reprezintă o temă in Android?
• O temă este un set de proprietăţi de
formatare care pot fi aplicate ca unitate pe un
activity sau pe întreaga aplicaţie.
• Temele din Android sunt <resources>
• Există teme default
• Pot fi create teme customizate
Cum declarăm o temă?
•Asemănător stilurilor, într-un <style> element
•Exemplu:
Ştiaţi că . . .
... puteţi folosi referinţa la o resursă prin item
name folosind unul din simbolurile "@", "?"
?
• @ este folosit pentru referinţe definite in alt
fişier din cadrul proiectului sau din Android
framework
• ? este folosit pentru referinţe la elemente din
acelaşi fişier
• sunt folosite doar in fişierele XML
Moştenire
• Atât stilurile, cât şi temele, pot moşteni unele
existente, cu scopul de a modifica anumite
caracteristici sau pentru a adăuga proprietăţi
noi.
• Cum facem asta?
o folosind "parent"
• Putem, de asemenea, moşteni un stil sau o
temă din cele create chiar de noi.
Pentru aceasta putem folosi elementul "."
Cum?
• Aici am mostenit stilul CodeFont si i-am
atribuit o noua proprietate, culoarea textului
(rosu).
Putem face asta de oricâte ori, atribuind
stilurilor/temelor părinte noi proprietăţi, prin
simpla separare a numelor cu caracterul "."
Moştenire la Themes
• De ce trebuie sa ţinem cont?
o Compatibilitate între device-uri !!!
• Putem folosi teme holografice (Holo) pentru
aplicaţiile care rulează pe Android 3.0 (sau
mai mult) - API Level 11
• Trebuie să specificăm tipul de temă folosit
prin adăugarea declaraţiei acesteia şi în
folderul special creat pentru Android 3.0 +
/res/values-v11, in fişierul themes.xml.
• Vom folosi varianta Holo a temei din
Android.
• În funcţie de versiunea de Android folosita,
dispozitivul îşi va selecta tema, daca
aceasta a fost declarată în ambele fişiere.
Exemplu:
• /res/values/themes.xml
• /res/values-v11/themes.xml
Setarea unei teme
• Modificăm AndroidManifest.xml
o pentru setarea temei pe întreaga aplicaţie:
<application android:theme="@style/CustomTheme">
• pentru setarea temei pe un activity al aplicaţiei:
<activity android:theme="@android:style/Theme.Dialog">
• Sau aplicăm tema direct din cod.
• Trebuie ţinut cont că acest lucru trebuie
făcut înainte de orice instanţiere de View în
context o de exemplu înainte de setContentView(View) şi
inflate(int, ViewGroup)
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
...
setTheme(android.R.style.Theme_Light);
setContentView(R.layout.linear_layout_3);
}
Surse de inspiraţie
• http://developer.android.com/guide/topics/ui/themes.htm
l
• http://www.linuxtopia.org/online_books/android/devguid
e/guide/topics/ui/themes.html
• http://brainflush.wordpress.com/2009/03/15/understandi
ng-android-themes-and-styles/
• http://www.androidengineer.com/2010/06/using-themes-
in-android-applications.html
Vă mulţumim pentru atenţie!