Skip to content

Commit 89ecf71

Browse files
Migrate snippets from dac/training/wearables/tiles/screen-size (#617)
1 parent 30ed522 commit 89ecf71

File tree

1 file changed

+79
-2
lines changed
  • wear/src/main/java/com/example/wear/snippets/m3/tile

1 file changed

+79
-2
lines changed

wear/src/main/java/com/example/wear/snippets/m3/tile/Tile.kt

Lines changed: 79 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,17 +16,25 @@
1616

1717
package com.example.wear.snippets.m3.tile
1818

19+
import android.content.Context
1920
import androidx.wear.protolayout.ResourceBuilders.Resources
2021
import androidx.wear.protolayout.TimelineBuilders.Timeline
2122
import androidx.wear.protolayout.material3.Typography.BODY_LARGE
23+
import androidx.wear.protolayout.material3.button
24+
import androidx.wear.protolayout.material3.buttonGroup
2225
import androidx.wear.protolayout.material3.materialScope
2326
import androidx.wear.protolayout.material3.primaryLayout
2427
import androidx.wear.protolayout.material3.text
28+
import androidx.wear.protolayout.modifiers.clickable
2529
import androidx.wear.protolayout.types.layoutString
2630
import androidx.wear.tiles.RequestBuilders
2731
import androidx.wear.tiles.RequestBuilders.ResourcesRequest
2832
import androidx.wear.tiles.TileBuilders.Tile
2933
import androidx.wear.tiles.TileService
34+
import androidx.wear.tiles.tooling.preview.Preview
35+
import androidx.wear.tiles.tooling.preview.TilePreviewData
36+
import androidx.wear.tiles.tooling.preview.TilePreviewHelper
37+
import androidx.wear.tooling.preview.devices.WearDevices
3038
import com.google.common.util.concurrent.Futures
3139

3240
private const val RESOURCES_VERSION = "1"
@@ -53,8 +61,77 @@ class MyTileService : TileService() {
5361
)
5462

5563
override fun onTileResourcesRequest(requestParams: ResourcesRequest) =
64+
Futures.immediateFuture(Resources.Builder().setVersion(RESOURCES_VERSION).build())
65+
}
66+
67+
// [END android_wear_m3_tile_mytileservice]
68+
69+
class TileBreakpoints : TileService() {
70+
71+
override fun onTileRequest(requestParams: RequestBuilders.TileRequest) =
5672
Futures.immediateFuture(
57-
Resources.Builder().setVersion(RESOURCES_VERSION).build()
73+
Tile.Builder()
74+
.setTileTimeline(
75+
Timeline.fromLayoutElement(
76+
// [START android_wear_tile_breakpoints]
77+
materialScope(this, requestParams.deviceConfiguration) {
78+
// [START_EXCLUDE]
79+
val button1 =
80+
button(
81+
onClick = clickable(),
82+
labelContent = { text("button1".layoutString) },
83+
)
84+
val button2 =
85+
button(
86+
onClick = clickable(),
87+
labelContent = { text("button2".layoutString) },
88+
)
89+
val button3 =
90+
button(
91+
onClick = clickable(),
92+
labelContent = { text("button3".layoutString) },
93+
)
94+
val button4 =
95+
button(
96+
onClick = clickable(),
97+
labelContent = { text("button4".layoutString) },
98+
)
99+
val button5 =
100+
button(
101+
onClick = clickable(),
102+
labelContent = { text("button5".layoutString) },
103+
)
104+
// [END_EXCLUDE]
105+
val isLargeScreen = deviceConfiguration.screenWidthDp >= 225
106+
primaryLayout(
107+
mainSlot = {
108+
buttonGroup {
109+
buttonGroupItem { button1 }
110+
buttonGroupItem { button2 }
111+
buttonGroupItem { button3 }
112+
if (isLargeScreen) {
113+
buttonGroupItem { button4 }
114+
buttonGroupItem { button5 }
115+
}
116+
}
117+
}
118+
)
119+
}
120+
// [END android_wear_tile_breakpoints]
121+
)
122+
)
123+
.build()
58124
)
59125
}
60-
// [END android_wear_m3_tile_mytileservice]
126+
127+
// [START android_wear_tile_preview]
128+
@Preview(device = WearDevices.LARGE_ROUND)
129+
fun smallPreview(context: Context) = TilePreviewData {
130+
TilePreviewHelper.singleTimelineEntryTileBuilder(
131+
materialScope(context, it.deviceConfiguration) {
132+
primaryLayout(mainSlot = { text("Hello, World".layoutString) })
133+
}
134+
)
135+
.build()
136+
}
137+
// [END android_wear_tile_preview]

0 commit comments

Comments
 (0)