@@ -20,21 +20,24 @@ import androidx.annotation.DrawableRes
20
20
import androidx.compose.Composable
21
21
import androidx.ui.animation.Crossfade
22
22
import androidx.ui.core.Modifier
23
- import androidx.ui.core.Text
23
+ import androidx.ui.foundation.Image
24
+ import androidx.ui.foundation.Text
24
25
import androidx.ui.foundation.shape.corner.RoundedCornerShape
26
+ import androidx.ui.graphics.ColorFilter
25
27
import androidx.ui.layout.Arrangement
26
28
import androidx.ui.layout.Column
27
- import androidx.ui.layout.LayoutGravity
28
- import androidx.ui.layout.LayoutHeight
29
- import androidx.ui.layout.LayoutPadding
30
- import androidx.ui.layout.LayoutSize
31
- import androidx.ui.layout.LayoutWidth
32
29
import androidx.ui.layout.Row
33
30
import androidx.ui.layout.Spacer
31
+ import androidx.ui.layout.fillMaxSize
32
+ import androidx.ui.layout.fillMaxWidth
33
+ import androidx.ui.layout.padding
34
+ import androidx.ui.layout.preferredHeight
35
+ import androidx.ui.layout.preferredWidth
34
36
import androidx.ui.material.Divider
35
37
import androidx.ui.material.MaterialTheme
38
+ import androidx.ui.material.Surface
36
39
import androidx.ui.material.TextButton
37
- import androidx.ui.material.surface.Surface
40
+ import androidx.ui.res.vectorResource
38
41
import androidx.ui.tooling.preview.Preview
39
42
import androidx.ui.unit.dp
40
43
import com.example.jetnews.R
@@ -56,7 +59,7 @@ fun JetnewsApp() {
56
59
@Composable
57
60
private fun AppContent () {
58
61
Crossfade (JetnewsStatus .currentScreen) { screen ->
59
- Surface (color = MaterialTheme .colors() .background) {
62
+ Surface (color = MaterialTheme .colors.background) {
60
63
when (screen) {
61
64
is Screen .Home -> HomeScreen ()
62
65
is Screen .Interests -> InterestsScreen ()
@@ -71,49 +74,61 @@ fun AppDrawer(
71
74
currentScreen : Screen ,
72
75
closeDrawer : () -> Unit
73
76
) {
74
- Column (modifier = LayoutSize .Fill ) {
75
- Spacer (LayoutHeight (24 .dp))
76
- Row (modifier = LayoutPadding (16 .dp)) {
77
- VectorImage (
78
- id = R .drawable.ic_jetnews_logo,
79
- tint = MaterialTheme .colors().primary
80
- )
81
- Spacer (LayoutWidth (8 .dp))
82
- VectorImage (
83
- id = R .drawable.ic_jetnews_wordmark,
84
- tint = MaterialTheme .colors().onSurface
85
- )
86
- }
87
- Divider (color = MaterialTheme .colors().onSurface.copy(alpha = .2f ))
77
+ Column (modifier = Modifier .fillMaxSize()) {
78
+ Spacer (Modifier .preferredHeight(24 .dp))
79
+ JetNewsLogo (Modifier .padding(16 .dp))
80
+ Divider (color = MaterialTheme .colors.onSurface.copy(alpha = .2f ))
88
81
DrawerButton (
89
82
icon = R .drawable.ic_home,
90
83
label = " Home" ,
91
- isSelected = currentScreen == Screen .Home
92
- ) {
93
- navigateTo(Screen .Home )
94
- closeDrawer()
95
- }
84
+ isSelected = currentScreen == Screen .Home ,
85
+ action = {
86
+ navigateTo(Screen .Home )
87
+ closeDrawer()
88
+ }
89
+ )
96
90
97
91
DrawerButton (
98
92
icon = R .drawable.ic_interests,
99
93
label = " Interests" ,
100
- isSelected = currentScreen == Screen .Interests
101
- ) {
102
- navigateTo(Screen .Interests )
103
- closeDrawer()
104
- }
94
+ isSelected = currentScreen == Screen .Interests ,
95
+ action = {
96
+ navigateTo(Screen .Interests )
97
+ closeDrawer()
98
+ }
99
+ )
100
+ }
101
+ }
102
+
103
+ @Composable
104
+ private fun JetNewsLogo (modifier : Modifier = Modifier .None ) {
105
+ Row (modifier = modifier) {
106
+ Image (
107
+ asset = vectorResource(R .drawable.ic_jetnews_logo),
108
+ colorFilter = ColorFilter .tint(MaterialTheme .colors.primary)
109
+ )
110
+ Spacer (Modifier .preferredWidth(8 .dp))
111
+ Image (
112
+ asset = vectorResource(R .drawable.ic_jetnews_wordmark),
113
+ colorFilter = ColorFilter .tint(MaterialTheme .colors.onSurface)
114
+ )
105
115
}
106
116
}
107
117
108
118
@Composable
109
119
private fun DrawerButton (
110
- modifier : Modifier = Modifier .None ,
111
120
@DrawableRes icon : Int ,
112
121
label : String ,
113
122
isSelected : Boolean ,
114
- action : () -> Unit
123
+ action : () -> Unit ,
124
+ modifier : Modifier = Modifier .None
115
125
) {
116
- val colors = MaterialTheme .colors()
126
+ val colors = MaterialTheme .colors
127
+ val imageAlpha = if (isSelected) {
128
+ 1f
129
+ } else {
130
+ 0.6f
131
+ }
117
132
val textIconColor = if (isSelected) {
118
133
colors.primary
119
134
} else {
@@ -125,28 +140,26 @@ private fun DrawerButton(
125
140
colors.surface
126
141
}
127
142
128
- val surfaceModifier = modifier +
129
- LayoutPadding (start = 8 .dp, top = 8 .dp, end = 8 .dp, bottom = 0 .dp) +
130
- LayoutWidth . Fill
143
+ val surfaceModifier = modifier
144
+ .padding (start = 8 .dp, top = 8 .dp, end = 8 .dp)
145
+ .fillMaxWidth()
131
146
Surface (
132
147
modifier = surfaceModifier,
133
148
color = backgroundColor,
134
149
shape = RoundedCornerShape (4 .dp)
135
150
) {
136
- TextButton (onClick = action, modifier = LayoutWidth . Fill ) {
137
- Row (arrangement = Arrangement .Start , modifier = LayoutWidth . Fill ) {
138
- VectorImage (
139
- modifier = LayoutGravity . Center ,
140
- id = icon ,
141
- tint = textIconColor
151
+ TextButton (onClick = action, modifier = Modifier .fillMaxWidth() ) {
152
+ Row (arrangement = Arrangement .Start , modifier = Modifier .fillMaxWidth() ) {
153
+ Image (
154
+ asset = vectorResource(icon) ,
155
+ colorFilter = ColorFilter .tint(textIconColor) ,
156
+ alpha = imageAlpha
142
157
)
143
- Spacer (LayoutWidth (16 .dp))
158
+ Spacer (Modifier .preferredWidth (16 .dp))
144
159
Text (
145
160
text = label,
146
- style = (MaterialTheme .typography()).body2.copy(
147
- color = textIconColor
148
- ),
149
- modifier = LayoutWidth .Fill
161
+ style = MaterialTheme .typography.body2.copy(color = textIconColor),
162
+ modifier = Modifier .fillMaxWidth()
150
163
)
151
164
}
152
165
}
0 commit comments