66
Stylování ActionBaru Tomáš Kypta @TomasKypta

Stylování ActionBaru

Embed Size (px)

DESCRIPTION

Lecture on Android ActionBar styling. At aDev Meetup #2 FIT ČVUT Prague.

Citation preview

Page 1: Stylování ActionBaru

Stylování ActionBaru

Tomáš Kypta@TomasKypta

Page 2: Stylování ActionBaru

ActionBar

● přidán v Androidu 3.0 (API level 11)● další rozšíření v Androidu 4.0 (API level 14)● není v support library● ActionBarSherlock

Page 3: Stylování ActionBaru

ActionBarSherlock

● backportuje ActionBar na Android 2.x● nahrazuje nativní ActionBar na Android 3.x● nyní ve verzi 4.2.0

Page 4: Stylování ActionBaru

ActionBar

1. main action bar

2. top action bar

3. bottom action bar

Page 5: Stylování ActionBaru

ActionBar

Page 6: Stylování ActionBaru

Základ

● tmavé a světlé téma– definují default styly pro všechny UI prvky

● Theme.Sherlock (Theme.Holo, Theme)

● Theme.Sherlock.Light (Theme.Holo.Light, Theme.Light)

● kombinace tmavého a světlého tématu● Theme.Sherlock.Light.DarkActionBar

(Theme.Holo.Light.DarkActionBar)

Page 7: Stylování ActionBaru

ActionBar – kde začít

● http://developer.android.com/guide/topics/ui/actionbar.html

● http://jgilfelt.github.com/android-actionbarstylegenerator

Page 8: Stylování ActionBaru

ActionBar - styly

● matoucí, co kde má být nastaveno● celkové stylování definováno několika

položkami v tématu– některé položky obsahují kompexní styly

● pro ActionBarSherlock je třeba položky (většinou) zduplikovat bez namespace 'android'

Page 9: Stylování ActionBaru

ActionBar

● vypnutí ActionBaru

● nelze pak zapnout v kódu

Page 10: Stylování ActionBaru

ActionBar - overlay

Page 11: Stylování ActionBaru

ActionBar - výška

● portrait - 48dp● landscape - 40dp● sw600dp - 56dp

● raději neměnit

Page 12: Stylování ActionBaru

Home Layout

● složen z:– icon/logo

– title & subtitle– homeAsUpIndicator

● nelze vyměnit

Page 13: Stylování ActionBaru

Home Layout

Page 14: Stylování ActionBaru

Home Layout

Page 15: Stylování ActionBaru

Home Layout

● části lze vypnout

Page 16: Stylování ActionBaru

Home Layout

Page 17: Stylování ActionBaru

Home Layout – z kódu

● setDisplayOptions()● setDisplayHomeAsUpEnabled()● setDisplayShowCustomEnabled()● setDisplayShowHomeEnabled()● setDisplayShowTitleEnabled()● setDisplayUseLogoEnabled()● setHomeButtonEnabled()

Page 18: Stylování ActionBaru

Icon/Logo

● defaultně se zobrazuje ikona aplikace● lze zobrazit jakoukoliv ikonu/obrázek

● setIcon(), setLogo()

Page 19: Stylování ActionBaru

Icon/Logo

● 4dip top & bottom margin– nelze změnit

● designer si toho musí být vědom

– logo by mělo mít transparent pozadí

– nedělat stavy s barevným pozadím

Page 20: Stylování ActionBaru

Icon/Logo background

● nelze použít color selector - crash● společné pozadí pro homeAsUpIndicator a

ikonu/logo● na celou výšku ActionBaru● použije se i pro další prvky v ActionBaru

Page 21: Stylování ActionBaru

homeAsUpIndicator

● 16dip x 16dip● lze použít jiný rozměr● ideálně jen přebarvit defaultní ikonu● šířka ovlivňuje odsazení ikony/loga zleva

Page 22: Stylování ActionBaru

homeAsUpIndicator

● šířka ovlivňuje odsazení ikony/loga zleva● ikona/logo částečně zprava překrývá

homeAsUpIndicator● mdpi – 3px, hdpi – 5px, xhdpi - 7px

Page 23: Stylování ActionBaru

homeAsUpIndicator

● šířka ovlivňuje odsazení ikony/loga zleva● ikona/logo částečně zprava překrývá

homeAsUpIndicator● mdpi – 3px, hdpi – 5px, xhdpi - 7px

Page 24: Stylování ActionBaru

homeAsUpIndicator

● měl by mít transparent pozadí● nedělat stavy s barevným pozadím

Page 25: Stylování ActionBaru

Title

● default hodnota z android:label z manifestu● lze měnit v kódu● raději nepoužívat android:label=””

Page 26: Stylování ActionBaru

Subtitle

● text se nastavuje v kódu

Page 27: Stylování ActionBaru

Menu

Page 28: Stylování ActionBaru

Menu

● položky menu umísťované do AB● atribut android:showAsAction

– always – položka se přidá vždy do AB (nemusí se vejít)

– ifRoom – podle místa se buď přidá do AB nebo do overflow menu

– never – vždy v overflow menu

– withText – snaží se zobrazit ikonu s textem

– collapseActionView – položka má view, které kolabuje do normální položky menu

Page 29: Stylování ActionBaru

Menu

● může ovlivnit zobrazení titulku● ikona a homeAsUpIndicator neovlivněny● overflow ikona ovlivněna

Page 30: Stylování ActionBaru

Action button

● defaultní background je ?attr/actionBarItemBackground

● ikona má celou výšku AB● ikony by měly mít transparentní pozadí

Page 31: Stylování ActionBaru

Action button - actionLayout

● menu resource item může mít vlastní layout

● background je třeba nastavit v layoutu

Page 32: Stylování ActionBaru

Action button - actionViewClass

● menu resource item může být definován nějakým widgetem

Page 33: Stylování ActionBaru

Action button - collapseActionView

● actionView lze rozbalit – zabere celou šířku kromě homeAsUpIndicatoru, ikony a overflow ikony

Page 34: Stylování ActionBaru

Action overflow button

● zobrazen, pokud nema telefon HW menu tlačítko

● v předchozí verzi ABS existovalo téma .ForceOverflow

Page 35: Stylování ActionBaru

Action overflow button

Page 36: Stylování ActionBaru

Action overflow button

Page 37: Stylování ActionBaru

Action overflow button

● defaultní background je ?attr/actionBarItemBackground

● ideálně pouze přebarvit defaultní ikonu

Page 38: Stylování ActionBaru

Action overflow menu

● pozadí

Page 39: Stylování ActionBaru

Action overfow menu

● item selector

● pozor – nastaví se pro každý spinner dropdown

● nepoužívat color selector ani barvy v drawable selectoru

Page 40: Stylování ActionBaru

Action overflow menu

● text

Page 41: Stylování ActionBaru

ProgressBar● inditerminateProgress & progress zabudovány v

AB

● requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS)

● requestWindowFeature(Window.FEATURE_PROGRESS)

● setSupportProgressBarIndeterminateVisibility(true)

● setSupportProgress(progressValue) - hodnota od 0 do 10000

● setSupportProgressBarVisibility(true)

Page 42: Stylování ActionBaru

Indeterminate Progress

Page 43: Stylování ActionBaru

Progress

Page 44: Stylování ActionBaru

Custom view

● lze i v kódu setCustomView(R.layout.custom);

Page 45: Stylování ActionBaru

Custom view

● natazeni na cely AB (schova i title)

Page 46: Stylování ActionBaru

Stín pod ActionBarem

● res/values

● res/values-v14

Page 47: Stylování ActionBaru

Split ActionBar

● defaultně vypnuto

● nebo v <application>● umísťuje se sem menu

Page 48: Stylování ActionBaru

Split ActionBar

Page 49: Stylování ActionBaru

Split ActionBar

● expandovaná action views jsou roztažena v hlavním actionbaru

Page 50: Stylování ActionBaru

Taby

● vytvářeny v kódu● setNavigationMode(ActionBar.NAVIGATION_MODE_TABS)

● můžou obsahovat text, ikonu, custom view

Page 51: Stylování ActionBaru

Taby

● podle dostupného místa vytvořeny v hlavním action baru nebo stacked action baru

● pokud není dost místa mohou zkolabovat do list navigation

● nelze vynutit umístění ani formu

Page 52: Stylování ActionBaru

Taby

Page 53: Stylování ActionBaru

Taby – stacked action bar

Page 54: Stylování ActionBaru

Taby – TabBar

● TabBar background

Page 55: Stylování ActionBaru

Taby

● tab background

Page 56: Stylování ActionBaru

Taby - text

Page 57: Stylování ActionBaru

List navigation

● created in code● setNavigationMode(ActionBar.NAVIGATION_MODE_LIST)

● taby a list menu nemohou existovat společně

Page 58: Stylování ActionBaru

List navigation

Page 59: Stylování ActionBaru

List navigation

● list selector – lze nastavit společně s overflow menu

● nebo nutné vytvořit v layoutu položek

● dobré stejně vyřešit i text● nefunguje, pokud vzniklo z tabu

Page 60: Stylování ActionBaru

ActionMode

● context menu● nahrazení of plovoucího menu● implementováno action barem● může být split action mode

Page 61: Stylování ActionBaru

ActionMode

Page 62: Stylování ActionBaru

ActionMode - background

Page 63: Stylování ActionBaru

ActionMode

Page 64: Stylování ActionBaru

ActionMode

Page 65: Stylování ActionBaru

SearchView

(android:)searchDropdownBackground● (android:)searchViewTextField● (android:)searchViewTextFieldRight● (android:)searchViewCloseIcon● (android:)searchViewSearchIcon● (android:)searchViewGoIcon● (android:)searchViewVoiceIcon

Page 66: Stylování ActionBaru

THE END