Skip to content

Commit fb70e86

Browse files
committed
wear: update tiles previews
1 parent 01cb52a commit fb70e86

File tree

4 files changed

+83
-4
lines changed

4 files changed

+83
-4
lines changed

wear/build.gradle

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -98,9 +98,11 @@ dependencies {
9898
implementation "androidx.wear.watchface:watchface-complications-data-source-ktx:$wear_watchface_version"
9999

100100
// WearOS Tiles
101-
implementation("androidx.wear.tiles:tiles:$wear_tiles_version")
102-
debugImplementation("androidx.wear.tiles:tiles-renderer:$wear_tiles_version")
103-
testImplementation("androidx.wear.tiles:tiles-testing:$wear_tiles_version")
101+
implementation "androidx.wear.tiles:tiles:$wear_tiles_version"
102+
debugImplementation "androidx.wear.tiles:tiles-renderer:$wear_tiles_version"
103+
testImplementation "androidx.wear.tiles:tiles-testing:$wear_tiles_version"
104+
debugImplementation "androidx.wear.tiles:tiles-tooling:$wear_tiles_version"
105+
debugImplementation "androidx.wear.tiles:tiles-tooling-preview:$wear_tiles_version"
104106
implementation 'androidx.wear.protolayout:protolayout-material:1.2.1'
105107
implementation "com.google.android.horologist:horologist-tiles:$horologist_version"
106108

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package com.thewizrd.simplewear.ui.tools
2+
3+
import androidx.wear.tiles.tooling.preview.Preview
4+
import androidx.wear.tooling.preview.devices.WearDevices
5+
6+
@Preview(
7+
device = WearDevices.LARGE_ROUND,
8+
group = "Devices - Large Round"
9+
)
10+
@Preview(
11+
device = WearDevices.SMALL_ROUND,
12+
group = "Devices - Small Round"
13+
)
14+
@Preview(
15+
device = WearDevices.SQUARE,
16+
group = "Devices - Square"
17+
)
18+
@Preview(
19+
device = WearDevices.SMALL_ROUND,
20+
group = "Devices - Small Round",
21+
fontScale = 1.5f
22+
)
23+
public annotation class WearTilePreviewDevices
24+
25+
@Preview(
26+
device = WearDevices.SMALL_ROUND,
27+
group = "Devices - Small Round"
28+
)
29+
public annotation class WearSmallRoundDeviceTilePreview
30+
31+
@Preview(
32+
device = WearDevices.LARGE_ROUND,
33+
group = "Devices - Large Round"
34+
)
35+
public annotation class WearLargeRoundDeviceTilePreview
36+
37+
@Preview(
38+
device = WearDevices.SQUARE,
39+
group = "Devices - Square"
40+
)
41+
public annotation class WearSquareDeviceTilePreview

wear/src/main/java/com/thewizrd/simplewear/wearable/tiles/TilePreviews.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import com.thewizrd.shared_resources.actions.RingerChoice
2020
import com.thewizrd.shared_resources.actions.ToggleAction
2121
import com.thewizrd.shared_resources.helpers.WearConnectionStatus
2222
import com.thewizrd.shared_resources.media.PlaybackState
23+
import com.thewizrd.shared_resources.media.PositionState
2324
import com.thewizrd.shared_resources.utils.ImageUtils.toByteArray
2425
import com.thewizrd.simplewear.R
2526
import kotlinx.coroutines.runBlocking
@@ -161,6 +162,7 @@ fun MediaPlayerTilePreview() {
161162
artist = "Artist",
162163
playbackState = PlaybackState.PAUSED,
163164
audioStreamState = AudioStreamState(3, 0, 5, AudioStreamType.MUSIC),
165+
positionState = PositionState(100, 50),
164166
artwork = runBlocking {
165167
ContextCompat.getDrawable(context, R.drawable.ws_full_sad)?.toBitmapOrNull()
166168
?.toByteArray()

wear/src/main/java/com/thewizrd/simplewear/wearable/tiles/layouts/MediaPlayerTileLayout.kt

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import android.content.Context
44
import android.graphics.Color
55
import androidx.annotation.OptIn
66
import androidx.core.content.ContextCompat
7+
import androidx.core.graphics.drawable.toBitmapOrNull
78
import androidx.wear.protolayout.ActionBuilders
89
import androidx.wear.protolayout.ColorBuilders
910
import androidx.wear.protolayout.ColorBuilders.ColorProp
@@ -43,10 +44,16 @@ import androidx.wear.protolayout.material.Text
4344
import androidx.wear.protolayout.material.Typography
4445
import androidx.wear.protolayout.material.layouts.MultiSlotLayout
4546
import androidx.wear.protolayout.material.layouts.PrimaryLayout
47+
import androidx.wear.tiles.tooling.preview.TilePreviewData
48+
import com.thewizrd.shared_resources.actions.AudioStreamState
49+
import com.thewizrd.shared_resources.actions.AudioStreamType
4650
import com.thewizrd.shared_resources.helpers.WearConnectionStatus
4751
import com.thewizrd.shared_resources.media.PlaybackState
52+
import com.thewizrd.shared_resources.utils.ImageUtils.toByteArray
4853
import com.thewizrd.simplewear.R
54+
import com.thewizrd.simplewear.ui.tools.WearTilePreviewDevices
4955
import com.thewizrd.simplewear.wearable.tiles.MediaPlayerTileMessenger.PlayerAction
56+
import com.thewizrd.simplewear.wearable.tiles.MediaPlayerTileRenderer
5057
import com.thewizrd.simplewear.wearable.tiles.MediaPlayerTileRenderer.Companion.ID_APPICON
5158
import com.thewizrd.simplewear.wearable.tiles.MediaPlayerTileRenderer.Companion.ID_ARTWORK
5259
import com.thewizrd.simplewear.wearable.tiles.MediaPlayerTileRenderer.Companion.ID_OPENONPHONE
@@ -58,6 +65,7 @@ import com.thewizrd.simplewear.wearable.tiles.MediaPlayerTileRenderer.Companion.
5865
import com.thewizrd.simplewear.wearable.tiles.MediaPlayerTileRenderer.Companion.ID_VOL_DOWN
5966
import com.thewizrd.simplewear.wearable.tiles.MediaPlayerTileRenderer.Companion.ID_VOL_UP
6067
import com.thewizrd.simplewear.wearable.tiles.MediaPlayerTileState
68+
import kotlinx.coroutines.runBlocking
6169
import java.time.Instant
6270

6371
private val CIRCLE_SIZE = dp(48f)
@@ -435,7 +443,7 @@ private fun PlayerButton(
435443
action: PlayerAction
436444
): LayoutElement {
437445
val isPlayPause = action == PlayerAction.PAUSE || action == PlayerAction.PLAY
438-
val size = if (isPlayPause) dp(50f) else dp(52f)
446+
val size = dp(50f)
439447
return Box.Builder()
440448
.setHeight(size)
441449
.setWidth(size)
@@ -552,4 +560,30 @@ private fun getResourceIdForPlayerAction(action: PlayerAction): String {
552560
PlayerAction.VOL_UP -> ID_VOL_UP
553561
PlayerAction.VOL_DOWN -> ID_VOL_DOWN
554562
}
563+
}
564+
565+
@WearTilePreviewDevices
566+
private fun MediaPlayerTilePreview(context: Context): TilePreviewData {
567+
val state = MediaPlayerTileState(
568+
connectionStatus = WearConnectionStatus.CONNECTED,
569+
title = "Title",
570+
artist = "Artist",
571+
playbackState = PlaybackState.PAUSED,
572+
audioStreamState = AudioStreamState(3, 0, 5, AudioStreamType.MUSIC),
573+
artwork = runBlocking {
574+
ContextCompat.getDrawable(context, R.drawable.ws_full_sad)?.toBitmapOrNull()
575+
?.toByteArray()
576+
},
577+
appIcon = runBlocking {
578+
ContextCompat.getDrawable(context, R.drawable.ic_play_circle_simpleblue)
579+
?.toBitmapOrNull()
580+
?.toByteArray()
581+
}
582+
)
583+
val renderer = MediaPlayerTileRenderer(context, debugResourceMode = true)
584+
585+
return TilePreviewData(
586+
onTileRequest = { renderer.renderTimeline(state, it) },
587+
onTileResourceRequest = { renderer.produceRequestedResources(state, it) }
588+
)
555589
}

0 commit comments

Comments
 (0)