1+ /*
2+ * Copyright 2025 The Android Open Source Project
3+ *
4+ * Licensed under the Apache License, Version 2.0 (the "License");
5+ * you may not use this file except in compliance with the License.
6+ * You may obtain a copy of the License at
7+ *
8+ * https://www.apache.org/licenses/LICENSE-2.0
9+ *
10+ * Unless required by applicable law or agreed to in writing, software
11+ * distributed under the License is distributed on an "AS IS" BASIS,
12+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+ * See the License for the specific language governing permissions and
14+ * limitations under the License.
15+ */
16+
117package com.example.snippets
218
319import android.app.Activity
@@ -36,11 +52,11 @@ import kotlinx.coroutines.launch
3652
3753class ActivityEmbeddingKotlinSnippets {
3854
39- class SnippetActivity : Activity () {
55+ class SnippetActivity : Activity () {
4056
4157 private val context = this
4258
43- @RequiresApi(api= VERSION_CODES .N )
59+ @RequiresApi(api = VERSION_CODES .N )
4460 override fun onCreate (savedInstanceState : Bundle ? ) {
4561 super .onCreate(savedInstanceState)
4662
@@ -81,22 +97,22 @@ class ActivityEmbeddingKotlinSnippets {
8197 val builder = SplitAttributes .Builder ()
8298 builder.setSplitType(SPLIT_TYPE_HINGE )
8399 return @setSplitAttributesCalculator if (feature?.isSeparating == true ) {
84- // Horizontal split for tabletop posture.
85- builder
86- .setSplitType(SPLIT_TYPE_HINGE )
87- .setLayoutDirection(
88- if (feature.orientation == FoldingFeature .Orientation .HORIZONTAL ) {
89- SplitAttributes .LayoutDirection .BOTTOM_TO_TOP
90- } else {
91- SplitAttributes .LayoutDirection .LOCALE
92- })
93- .build( )
94- }
95- else if (parentConfiguration.screenWidthDp >= 840 ) {
96- // Side-by-side dual-pane layout for wide displays.
97- builder
98- .setLayoutDirection(SplitAttributes .LayoutDirection .LOCALE )
99- .build()
100+ // Horizontal split for tabletop posture.
101+ builder
102+ .setSplitType(SPLIT_TYPE_HINGE )
103+ .setLayoutDirection(
104+ if (feature.orientation == FoldingFeature .Orientation .HORIZONTAL ) {
105+ SplitAttributes .LayoutDirection .BOTTOM_TO_TOP
106+ } else {
107+ SplitAttributes .LayoutDirection .LOCALE
108+ }
109+ )
110+ .build()
111+ } else if (parentConfiguration.screenWidthDp >= 840 ) {
112+ // Side-by-side dual-pane layout for wide displays.
113+ builder
114+ .setLayoutDirection(SplitAttributes .LayoutDirection .LOCALE )
115+ .build()
100116 } else {
101117 // No split for tall displays.
102118 builder
@@ -109,9 +125,9 @@ class ActivityEmbeddingKotlinSnippets {
109125
110126 // [START android_activity_embedding_splitPairFilter_kotlin]
111127 val splitPairFilter = SplitPairFilter (
112- ComponentName (this , ListActivity ::class .java),
113- ComponentName (this , DetailActivity ::class .java),
114- null
128+ ComponentName (this , ListActivity ::class .java),
129+ ComponentName (this , DetailActivity ::class .java),
130+ null
115131 )
116132 // [END android_activity_embedding_splitPairFilter_kotlin]
117133
@@ -139,8 +155,8 @@ class ActivityEmbeddingKotlinSnippets {
139155 // [END android_activity_embedding_splitPairRule_kotlin]
140156
141157 // [START android_activity_embedding_ruleController_kotlin]
142- val ruleController = RuleController .getInstance(this )
143- ruleController.addRule(splitPairRule)
158+ val ruleController = RuleController .getInstance(this )
159+ ruleController.addRule(splitPairRule)
144160 // [END android_activity_embedding_ruleController_kotlin]
145161
146162 // [START android_activity_embedding_placeholderActivityFilter_kotlin]
@@ -156,15 +172,15 @@ class ActivityEmbeddingKotlinSnippets {
156172
157173 // [START android_activity_embedding_splitPlaceholderRule_kotlin]
158174 val splitPlaceholderRule = SplitPlaceholderRule .Builder (
159- placeholderActivityFilterSet,
160- Intent (context, PlaceholderActivity ::class .java)
161- ).setDefaultSplitAttributes(splitAttributes)
162- .setMinWidthDp(840 )
163- .setMinSmallestWidthDp(600 )
164- .setMaxAspectRatioInPortrait(EmbeddingAspectRatio .ratio(1.5f ))
165- .setFinishPrimaryWithPlaceholder(SplitRule .FinishBehavior .ALWAYS )
166- .setSticky(false )
167- .build()
175+ placeholderActivityFilterSet,
176+ Intent (context, PlaceholderActivity ::class .java)
177+ ).setDefaultSplitAttributes(splitAttributes)
178+ .setMinWidthDp(840 )
179+ .setMinSmallestWidthDp(600 )
180+ .setMaxAspectRatioInPortrait(EmbeddingAspectRatio .ratio(1.5f ))
181+ .setFinishPrimaryWithPlaceholder(SplitRule .FinishBehavior .ALWAYS )
182+ .setSticky(false )
183+ .build()
168184 // [END android_activity_embedding_splitPlaceholderRule_kotlin]
169185
170186 // [START android_activity_embedding_addRuleSplitPlaceholderRule_kotlin]
@@ -173,8 +189,8 @@ class ActivityEmbeddingKotlinSnippets {
173189
174190 // [START android_activity_embedding_expandedActivityFilter_kotlin]
175191 val expandedActivityFilter = ActivityFilter (
176- ComponentName (this , ExpandedActivity ::class .java),
177- null
192+ ComponentName (this , ExpandedActivity ::class .java),
193+ null
178194 )
179195 // [END android_activity_embedding_expandedActivityFilter_kotlin]
180196
@@ -199,35 +215,32 @@ class ActivityEmbeddingKotlinSnippets {
199215
200216 if (WindowSdkExtensions .getInstance().extensionVersion >= 6 ) {
201217 _splitAttributesBuilder .setDividerAttributes(
202- DividerAttributes .DraggableDividerAttributes .Builder ()
203- .setColor(getColor(R .color.divider_color))
204- .setWidthDp(4 )
205- .setDragRange(DividerAttributes .DragRange .DRAG_RANGE_SYSTEM_DEFAULT )
206- .build()
218+ DividerAttributes .DraggableDividerAttributes .Builder ()
219+ .setColor(getColor(R .color.divider_color))
220+ .setWidthDp(4 )
221+ .setDragRange(DividerAttributes .DragRange .DRAG_RANGE_SYSTEM_DEFAULT )
222+ .build()
207223 )
208224 }
209225 val _splitAttributes : SplitAttributes = _splitAttributesBuilder .build()
210226 // [END android_activity_embedding_splitAttributesBuilder_kotlin]
211227
212- // [START android_activity_embedding_isActivityEmbedded_kotlin]
213- fun isActivityEmbedded (activity : Activity ): Boolean {
214- return ActivityEmbeddingController .getInstance(this ).isActivityEmbedded(activity)
215- }
216- // [END android_activity_embedding_isActivityEmbedded_kotlin]
217-
228+ // [START android_activity_embedding_isActivityEmbedded_kotlin]
229+ fun isActivityEmbedded (activity : Activity ): Boolean {
230+ return ActivityEmbeddingController .getInstance(this ).isActivityEmbedded(activity)
231+ }
232+ // [END android_activity_embedding_isActivityEmbedded_kotlin]
218233 }
219234 }
220235
221-
222236 // [START android_activity_embedding_DetailActivity_class_kotlin]
223- class DetailActivity : AppCompatActivity () {
237+ class DetailActivity : AppCompatActivity () {
224238 fun onOpenSubdetail () {
225- startActivity(Intent (this , SubdetailActivity ::class .java))
239+ startActivity(Intent (this , SubdetailActivity ::class .java))
226240 }
227241 }
228242 // [END android_activity_embedding_DetailActivity_class_kotlin]
229243
230-
231244 // [START android_activity_embedding_SplitInitializer_class_kotlin]
232245 class SplitInitializer : Initializer <RuleController > {
233246
@@ -243,31 +256,28 @@ class ActivityEmbeddingKotlinSnippets {
243256 }
244257 // [END android_activity_embedding_SplitInitializer_class_kotlin]
245258
246-
247259 /* *
248260 * Function used by snippet.
249261 */
250262 fun classForItem (item : Int ): Class <* > { return Class ::class .java }
251263
252264 // [START android_activity_embedding_MenuActivity_class_kotlin]
253- inner class MenuActivity : AppCompatActivity () {
265+ inner class MenuActivity : AppCompatActivity () {
254266 fun onMenuItemSelected (selectedMenuItem : Int ) {
255267 startActivity(Intent (this , classForItem(selectedMenuItem)))
256268 }
257269 }
258270 // [END android_activity_embedding_MenuActivity_class_kotlin]
259271
260-
261272 // [START android_activity_embedding_B_class_kotlin]
262- class B : AppCompatActivity () {
273+ class B : AppCompatActivity () {
263274 fun onOpenC () {
264275 startActivity(Intent (this , C ::class .java))
265276 }
266277 }
267278 // [END android_activity_embedding_B_class_kotlin]
268279
269-
270- class SnippetActivity2 : Activity () {
280+ class SnippetActivity2 : Activity () {
271281
272282 private val filterSet = HashSet <SplitPairFilter >()
273283
@@ -281,8 +291,7 @@ class ActivityEmbeddingKotlinSnippets {
281291 // [END android_activity_embedding_onCreate_RuleController_kotlin]
282292 }
283293
284-
285- class SplitDeviceActivity : AppCompatActivity () {
294+ class SplitDeviceActivity : AppCompatActivity () {
286295
287296 @OptIn(ExperimentalWindowApi ::class )
288297 override fun onCreate (savedInstanceState : Bundle ? ) {
@@ -303,9 +312,8 @@ class ActivityEmbeddingKotlinSnippets {
303312 }
304313 }
305314
306-
307- class SnippetActivity3 : AppCompatActivity () {
308- override fun onCreate (savedInstanceState : Bundle ? ){
315+ class SnippetActivity3 : AppCompatActivity () {
316+ override fun onCreate (savedInstanceState : Bundle ? ) {
309317 super .onCreate(savedInstanceState)
310318 setContentView(R .layout.activity_main)
311319 // [START android_activity_embedding_pinButton_kotlin]
@@ -327,19 +335,18 @@ class ActivityEmbeddingKotlinSnippets {
327335
328336 // [START android_activity_embedding_getSplitSupportStatus_kotlin]
329337 if (SplitController .getInstance(this ).splitSupportStatus ==
330- SplitController .SplitSupportStatus .SPLIT_AVAILABLE ) {
331- // Device supports split activity features.
338+ SplitController .SplitSupportStatus .SPLIT_AVAILABLE
339+ ) {
340+ // Device supports split activity features.
332341 }
333342 // [END android_activity_embedding_getSplitSupportStatus_kotlin]
334343 }
335344 }
336345
337-
338346 // Classes used by snippets.
339- class ListActivity {}
340- class SubdetailActivity {}
341- class PlaceholderActivity {}
342- class ExpandedActivity {}
343- class C {}
344-
347+ class ListActivity
348+ class SubdetailActivity
349+ class PlaceholderActivity
350+ class ExpandedActivity
351+ class C
345352}
0 commit comments