Skip to content

Commit 66f684e

Browse files
[Jetlagged] Update icons and remove material icons dependency (#1590)
This PR replaces the Material Icons dependency with local drawable resources for all icons used in the JetLagged sample. This involves: - Adding new vector drawable XML files for each icon (`ic_bedtime.xml`, `ic_home.xml`, `ic_leaderboard.xml`, `ic_menu.xml`, `ic_settings.xml`, `ic_single_bed.xml`, `ic_watch.xml`). - Updating composable functions in `HomeScreenCards.kt`, `JetLaggedHeader.kt`, and `JetLaggedDrawer.kt` to use `painterResource` for loading these local drawables instead of relying on the `Icons` object from the material-icons-extended library. - Removing the `androidx.compose.material.iconsExtended` dependency from the app's `build.gradle.kts` file. - Modifying the `Screen` enum in `JetLaggedDrawer.kt` to use `Int` (drawable resource ID) for the icon property instead of `ImageVector`. - Changing the `icon` parameter type in `TwoLineInfoCard` from `ImageVector` to `Int`.
2 parents ddf4ce4 + a712aeb commit 66f684e

File tree

11 files changed

+88
-27
lines changed

11 files changed

+88
-27
lines changed

JetLagged/app/build.gradle.kts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,6 @@ dependencies {
120120
implementation(libs.androidx.compose.ui.util)
121121
implementation(libs.androidx.compose.material3)
122122
implementation(libs.androidx.compose.animation)
123-
implementation(libs.androidx.compose.material.iconsExtended)
124123
implementation(libs.androidx.compose.materialWindow)
125124
implementation(libs.androidx.compose.ui.googlefonts)
126125
implementation(libs.androidx.compose.ui.tooling.preview)

JetLagged/app/src/main/java/com/example/jetlagged/HomeScreenCards.kt

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
package com.example.jetlagged
1818

19+
import androidx.annotation.DrawableRes
1920
import androidx.compose.foundation.BorderStroke
2021
import androidx.compose.foundation.layout.Arrangement
2122
import androidx.compose.foundation.layout.Box
@@ -39,9 +40,6 @@ import androidx.compose.foundation.layout.widthIn
3940
import androidx.compose.foundation.layout.wrapContentSize
4041
import androidx.compose.foundation.layout.wrapContentWidth
4142
import androidx.compose.foundation.shape.RoundedCornerShape
42-
import androidx.compose.material.icons.Icons
43-
import androidx.compose.material.icons.filled.SingleBed
44-
import androidx.compose.material.icons.filled.Watch
4543
import androidx.compose.material3.Card
4644
import androidx.compose.material3.CardDefaults
4745
import androidx.compose.material3.Icon
@@ -54,7 +52,7 @@ import androidx.compose.ui.Alignment.Companion.CenterVertically
5452
import androidx.compose.ui.Modifier
5553
import androidx.compose.ui.draw.drawBehind
5654
import androidx.compose.ui.graphics.Color
57-
import androidx.compose.ui.graphics.vector.ImageVector
55+
import androidx.compose.ui.res.painterResource
5856
import androidx.compose.ui.res.stringResource
5957
import androidx.compose.ui.text.style.TextAlign
6058
import androidx.compose.ui.tooling.preview.Preview
@@ -86,7 +84,13 @@ fun BasicInformationalCard(modifier: Modifier = Modifier, borderColor: Color, co
8684
}
8785

8886
@Composable
89-
fun TwoLineInfoCard(borderColor: Color, firstLineText: String, secondLineText: String, icon: ImageVector, modifier: Modifier = Modifier) {
87+
fun TwoLineInfoCard(
88+
borderColor: Color,
89+
firstLineText: String,
90+
secondLineText: String,
91+
@DrawableRes icon: Int,
92+
modifier: Modifier = Modifier,
93+
) {
9094
BasicInformationalCard(
9195
borderColor = borderColor,
9296
modifier = modifier.size(200.dp),
@@ -107,7 +111,7 @@ fun TwoLineInfoCard(borderColor: Color, firstLineText: String, secondLineText: S
107111
.align(CenterStart),
108112
) {
109113
Icon(
110-
icon, contentDescription = null,
114+
painter = painterResource(id = icon), contentDescription = null,
111115
modifier = Modifier
112116
.size(50.dp)
113117
.align(CenterVertically),
@@ -135,7 +139,7 @@ fun TwoLineInfoCard(borderColor: Color, firstLineText: String, secondLineText: S
135139
.align(Center),
136140
) {
137141
Icon(
138-
icon, contentDescription = null,
142+
painter = painterResource(id = icon), contentDescription = null,
139143
modifier = Modifier
140144
.size(50.dp)
141145
.align(CenterHorizontally),
@@ -167,7 +171,7 @@ fun AverageTimeInBedCard(modifier: Modifier = Modifier) {
167171
borderColor = JetLaggedTheme.extraColors.bed,
168172
firstLineText = stringResource(R.string.ave_time_in_bed_heading),
169173
secondLineText = "8h42min",
170-
icon = Icons.Default.Watch,
174+
icon = R.drawable.ic_watch,
171175
modifier = modifier
172176
.wrapContentWidth()
173177
.heightIn(min = 156.dp),
@@ -182,7 +186,7 @@ fun AverageTimeAsleepCard(modifier: Modifier = Modifier) {
182186
borderColor = JetLaggedTheme.extraColors.sleep,
183187
firstLineText = stringResource(R.string.ave_time_sleep_heading),
184188
secondLineText = "7h42min",
185-
icon = Icons.Default.SingleBed,
189+
icon = R.drawable.ic_single_bed,
186190
modifier = modifier
187191
.wrapContentWidth()
188192
.heightIn(min = 156.dp),

JetLagged/app/src/main/java/com/example/jetlagged/JetLaggedDrawer.kt

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ package com.example.jetlagged
1818

1919
import android.os.SystemClock
2020
import androidx.activity.compose.PredictiveBackHandler
21+
import androidx.annotation.DrawableRes
2122
import androidx.compose.animation.core.Animatable
2223
import androidx.compose.animation.core.calculateTargetValue
2324
import androidx.compose.animation.rememberSplineBasedDecay
@@ -30,11 +31,6 @@ import androidx.compose.foundation.layout.Column
3031
import androidx.compose.foundation.layout.fillMaxSize
3132
import androidx.compose.foundation.layout.padding
3233
import androidx.compose.foundation.shape.RoundedCornerShape
33-
import androidx.compose.material.icons.Icons
34-
import androidx.compose.material.icons.filled.Bedtime
35-
import androidx.compose.material.icons.filled.Home
36-
import androidx.compose.material.icons.filled.Leaderboard
37-
import androidx.compose.material.icons.filled.Settings
3834
import androidx.compose.material3.Icon
3935
import androidx.compose.material3.NavigationDrawerItem
4036
import androidx.compose.material3.Surface
@@ -50,9 +46,9 @@ import androidx.compose.runtime.setValue
5046
import androidx.compose.ui.Modifier
5147
import androidx.compose.ui.geometry.Offset
5248
import androidx.compose.ui.graphics.graphicsLayer
53-
import androidx.compose.ui.graphics.vector.ImageVector
5449
import androidx.compose.ui.input.pointer.util.VelocityTracker
5550
import androidx.compose.ui.platform.LocalDensity
51+
import androidx.compose.ui.res.painterResource
5652
import androidx.compose.ui.unit.dp
5753
import androidx.compose.ui.util.lerp
5854
import kotlin.coroutines.cancellation.CancellationException
@@ -113,7 +109,7 @@ fun HomeScreenDrawer(windowSizeClass: WindowSizeClass) {
113109
)
114110
}
115111
closeDrawer(velocityTracker.calculateVelocity().x)
116-
} catch (e: CancellationException) {
112+
} catch (_: CancellationException) {
117113
openDrawer(velocityTracker.calculateVelocity().x)
118114
}
119115
velocityTracker.resetTracking()
@@ -251,7 +247,7 @@ private fun HomeScreenDrawerContents(selectedScreen: Screen, onScreenSelected: (
251247
Text(it.text)
252248
},
253249
icon = {
254-
Icon(imageVector = it.icon, contentDescription = it.text)
250+
Icon(painter = painterResource(id = it.icon), contentDescription = it.text)
255251
},
256252
selected = selectedScreen == it,
257253
onClick = {
@@ -264,9 +260,9 @@ private fun HomeScreenDrawerContents(selectedScreen: Screen, onScreenSelected: (
264260

265261
private val DrawerWidth = 300.dp
266262

267-
private enum class Screen(val text: String, val icon: ImageVector) {
268-
Home("Home", Icons.Default.Home),
269-
SleepDetails("Sleep", Icons.Default.Bedtime),
270-
Leaderboard("Leaderboard", Icons.Default.Leaderboard),
271-
Settings("Settings", Icons.Default.Settings),
263+
private enum class Screen(val text: String, @DrawableRes val icon: Int) {
264+
Home("Home", R.drawable.ic_home),
265+
SleepDetails("Sleep", R.drawable.ic_bedtime),
266+
Leaderboard("Leaderboard", R.drawable.ic_leaderboard),
267+
Settings("Settings", R.drawable.ic_settings),
272268
}

JetLagged/app/src/main/java/com/example/jetlagged/sleep/JetLaggedHeader.kt

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,12 @@ import androidx.compose.foundation.layout.height
2424
import androidx.compose.foundation.layout.padding
2525
import androidx.compose.foundation.layout.systemBars
2626
import androidx.compose.foundation.layout.windowInsetsPadding
27-
import androidx.compose.material.icons.Icons
28-
import androidx.compose.material.icons.filled.Menu
2927
import androidx.compose.material3.Icon
3028
import androidx.compose.material3.IconButton
3129
import androidx.compose.material3.Text
3230
import androidx.compose.runtime.Composable
3331
import androidx.compose.ui.Modifier
32+
import androidx.compose.ui.res.painterResource
3433
import androidx.compose.ui.res.stringResource
3534
import androidx.compose.ui.text.style.TextAlign
3635
import androidx.compose.ui.tooling.preview.Preview
@@ -40,7 +39,7 @@ import com.example.jetlagged.ui.theme.TitleBarStyle
4039

4140
@Preview
4241
@Composable
43-
fun JetLaggedHeader(onDrawerClicked: () -> Unit = {}, modifier: Modifier = Modifier) {
42+
fun JetLaggedHeader(modifier: Modifier = Modifier, onDrawerClicked: () -> Unit = {}) {
4443
Box(
4544
modifier.height(150.dp),
4645
) {
@@ -49,7 +48,7 @@ fun JetLaggedHeader(onDrawerClicked: () -> Unit = {}, modifier: Modifier = Modif
4948
onClick = onDrawerClicked,
5049
) {
5150
Icon(
52-
Icons.Default.Menu,
51+
painter = painterResource(id = R.drawable.ic_menu),
5352
contentDescription = stringResource(R.string.not_implemented),
5453
)
5554
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<vector xmlns:android="http://schemas.android.com/apk/res/android"
2+
android:width="24dp"
3+
android:height="24dp"
4+
android:viewportWidth="960"
5+
android:viewportHeight="960">
6+
<path
7+
android:fillColor="@android:color/white"
8+
android:pathData="M484,880Q400,880 326.5,848Q253,816 198.5,761.5Q144,707 112,633.5Q80,560 80,476Q80,330 173,218.5Q266,107 410,80Q392,179 421,273.5Q450,368 521,439Q592,510 686.5,539Q781,568 880,550Q854,694 742,787Q630,880 484,880Z"/>
9+
</vector>
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<vector xmlns:android="http://schemas.android.com/apk/res/android"
2+
android:width="24dp"
3+
android:height="24dp"
4+
android:viewportWidth="960"
5+
android:viewportHeight="960">
6+
<path
7+
android:fillColor="@android:color/white"
8+
android:pathData="M160,840L160,360L480,120L800,360L800,840L560,840L560,560L400,560L400,840L160,840Z"/>
9+
</vector>
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<vector xmlns:android="http://schemas.android.com/apk/res/android"
2+
android:width="24dp"
3+
android:height="24dp"
4+
android:viewportWidth="960"
5+
android:viewportHeight="960">
6+
<path
7+
android:fillColor="@android:color/white"
8+
android:pathData="M80,840L80,360L300,360L300,840L80,840ZM370,840L370,120L590,120L590,840L370,840ZM660,840L660,440L880,440L880,840L660,840Z"/>
9+
</vector>
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<vector xmlns:android="http://schemas.android.com/apk/res/android"
2+
android:width="24dp"
3+
android:height="24dp"
4+
android:viewportWidth="960"
5+
android:viewportHeight="960">
6+
<path
7+
android:fillColor="@android:color/white"
8+
android:pathData="M120,720L120,640L840,640L840,720L120,720ZM120,520L120,440L840,440L840,520L120,520ZM120,320L120,240L840,240L840,320L120,320Z"/>
9+
</vector>
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<vector xmlns:android="http://schemas.android.com/apk/res/android"
2+
android:width="24dp"
3+
android:height="24dp"
4+
android:viewportWidth="960"
5+
android:viewportHeight="960">
6+
<path
7+
android:fillColor="@android:color/white"
8+
android:pathData="M370,880L354,752Q341,747 329.5,740Q318,733 307,725L188,775L78,585L181,507Q180,500 180,493.5Q180,487 180,480Q180,473 180,466.5Q180,460 181,453L78,375L188,185L307,235Q318,227 330,220Q342,213 354,208L370,80L590,80L606,208Q619,213 630.5,220Q642,227 653,235L772,185L882,375L779,453Q780,460 780,466.5Q780,473 780,480Q780,487 780,493.5Q780,500 778,507L881,585L771,775L653,725Q642,733 630,740Q618,747 606,752L590,880L370,880ZM482,620Q540,620 581,579Q622,538 622,480Q622,422 581,381Q540,340 482,340Q423,340 382.5,381Q342,422 342,480Q342,538 382.5,579Q423,620 482,620Z"/>
9+
</vector>
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<vector xmlns:android="http://schemas.android.com/apk/res/android"
2+
android:width="24dp"
3+
android:height="24dp"
4+
android:viewportWidth="960"
5+
android:viewportHeight="960">
6+
<path
7+
android:fillColor="@android:color/white"
8+
android:pathData="M280,760L240,760L214,680L160,680L160,479Q160,446 183.5,423Q207,400 240,400L240,400L240,280Q240,247 263.5,223.5Q287,200 320,200L640,200Q673,200 696.5,223.5Q720,247 720,280L720,400L720,400Q753,400 776.5,423.5Q800,447 800,480L800,680L746,680L720,760L680,760L654,680L306,680L280,760ZM520,400L640,400L640,280Q640,280 640,280Q640,280 640,280L520,280L520,400ZM320,400L440,400L440,280L320,280Q320,280 320,280Q320,280 320,280L320,400Z"/>
9+
</vector>

0 commit comments

Comments
 (0)