1616
1717package  com.example.wear.snippets.m3.tile 
1818
19+ import  android.content.Context 
1920import  androidx.wear.protolayout.ResourceBuilders.Resources 
2021import  androidx.wear.protolayout.TimelineBuilders.Timeline 
2122import  androidx.wear.protolayout.material3.Typography.BODY_LARGE 
23+ import  androidx.wear.protolayout.material3.button 
24+ import  androidx.wear.protolayout.material3.buttonGroup 
2225import  androidx.wear.protolayout.material3.materialScope 
2326import  androidx.wear.protolayout.material3.primaryLayout 
2427import  androidx.wear.protolayout.material3.text 
28+ import  androidx.wear.protolayout.modifiers.clickable 
2529import  androidx.wear.protolayout.types.layoutString 
2630import  androidx.wear.tiles.RequestBuilders 
2731import  androidx.wear.tiles.RequestBuilders.ResourcesRequest 
2832import  androidx.wear.tiles.TileBuilders.Tile 
2933import  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 
3038import  com.google.common.util.concurrent.Futures 
3139
3240private  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" 
83+                                 )
84+                             val  button2 = 
85+                                 button(
86+                                     onClick =  clickable(),
87+                                     labelContent =  { text(" button2" 
88+                                 )
89+                             val  button3 = 
90+                                 button(
91+                                     onClick =  clickable(),
92+                                     labelContent =  { text(" button3" 
93+                                 )
94+                             val  button4 = 
95+                                 button(
96+                                     onClick =  clickable(),
97+                                     labelContent =  { text(" button4" 
98+                                 )
99+                             val  button5 = 
100+                                 button(
101+                                     onClick =  clickable(),
102+                                     labelContent =  { text(" button5" 
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+                         //  [START 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" 
133+         }
134+     )
135+         .build()
136+ }
137+ //  [END android_wear_tile_preview]
0 commit comments