-
Notifications
You must be signed in to change notification settings - Fork 0
/
terms.txt
101 lines (61 loc) · 4.18 KB
/
terms.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
_____________
!! Термины !!
Style - коллекция property, которые описывают внешний вид и формат View & Window.
reuse этой коллекции без дублирования свойств
Почему они называются по разному?
1. Style - apply attrs to single view inside window.
2. Theme - apply attrs to each view/subview inside window
Theme - это style, примененный к Activity/Application.
__________________
!! Наследование !!
Способ наследования от @android:style отличается от способа наследования от наших собственных тем.
Свои - через точку. implicit
Чужие - parent="". explicit - always wins
________________
!! Attributes !!
Keys & value-format одновременно
keys - это просто имя
format - fraction/float/boolean/color/string/dimension/integer (flag/enum/reference)
Их можно объявлять attr.xml -> <attr name="" format="">
Вообще тут надо понимать xml:
Все аттрибуты, которые мы используем находятся в xmlns:android apk/res/android
Можно назвать его как хочется.
ссылки ? ns : attr / name
___________
!! Theme & Themeception!!
Сами ничего не делают, они просто набор конфигураций. База
Когда надо тулбар - темный, а остальное - светлым. Нужно ThemeOverlay - это и есть Themeception
Пересечения где тема Light.DarkActionBar использует подтемы из ThemeOverlay.Dark и наоборот
LightActivity -> DarkActionBar -> LightPopUp...
А какие цвета наследуются?
__________________
!! Готовые темы !!
Theme - переписывают все
ThemeOverlay - переписывают особое, оставляют при этом colorAccent / colorPrimary из базовой.
ThemeColors - high-level styling. Можно отнаследовать Light темы от обычной и... унаследовать базовые цвета о_О
Стиль -> использует аттрибут фона -> использут drawable.xml (selector) в значении -> использует ссылку на цвет из темы (на аттрибут)
Перечислить все нужные атрибуты для проекта наглядно! Не та картинка с 6 штуками, а моя, лучше.
colorAccent / colorPrimary / colorPrimaryDark / colorControlNormal (secondary) / colorControlActivated (accent)
______________
!! API 21 + !!
Можно использовать colorStateList и theme attr references для drawable.xml
Многие view можно tint'ить. Их части (thumb/track у seekbar)
______________________
!! Developer Errors !!
1. Не тот родитель.
2. Порядок чтения цвета:
- AttributeSet -> layout параметры
- explicit style -> style в xml
- defStyleRes -> R.style.*
- defStyleAttr -> R.attr.*
- base value in this theme - don't rely on it - это плохо, это значит, что если чего-то нет, то оно получит это значение, даже если там действительно должно быть пусто.
https://www.captechconsulting.com/blogs/android-material-themes-made-easy-with-appcompat
Base.V21.Theme.AppCompat.Light в этой теме описано куча аттрибутов.
<!-- Copy the platform default styles for the AppCompat widgets -->
<item name="buttonStyle">?android:buttonStyle</item>
<item name="buttonStyleSmall">?android:buttonStyleSmall</item>
<item name="checkboxStyle">?android:checkboxStyle</item>
<item name="checkedTextViewStyle">?android:checkedTextViewStyle</item>
<item name="radioButtonStyle">?android:radioButtonStyle</item>
<item name="ratingBarStyle">?android:ratingBarStyle</item>
<item name="spinnerStyle">?android:spinnerStyle</item>