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-
171package com.example.snippets
182
193import android.app.Activity
@@ -52,11 +36,11 @@ import kotlinx.coroutines.launch
5236
5337class ActivityEmbeddingKotlinSnippets {
5438
55- class SnippetActivity : Activity () {
39+ class SnippetActivity : Activity () {
5640
5741 private val context = this
5842
59- @RequiresApi(api = VERSION_CODES .N )
43+ @RequiresApi(api= VERSION_CODES .N )
6044 override fun onCreate (savedInstanceState : Bundle ? ) {
6145 super .onCreate(savedInstanceState)
6246
@@ -105,8 +89,7 @@ class ActivityEmbeddingKotlinSnippets {
10589 SplitAttributes .LayoutDirection .BOTTOM_TO_TOP
10690 } else {
10791 SplitAttributes .LayoutDirection .LOCALE
108- }
109- )
92+ })
11093 .build()
11194 } else if (parentConfiguration.screenWidthDp >= 840 ) {
11295 // Side-by-side dual-pane layout for wide displays.
@@ -172,15 +155,15 @@ class ActivityEmbeddingKotlinSnippets {
172155
173156 // [START android_activity_embedding_splitPlaceholderRule_kotlin]
174157 val splitPlaceholderRule = SplitPlaceholderRule .Builder (
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()
158+ placeholderActivityFilterSet,
159+ Intent (context, PlaceholderActivity ::class .java)
160+ ).setDefaultSplitAttributes(splitAttributes)
161+ .setMinWidthDp(840 )
162+ .setMinSmallestWidthDp(600 )
163+ .setMaxAspectRatioInPortrait(EmbeddingAspectRatio .ratio(1.5f ))
164+ .setFinishPrimaryWithPlaceholder(SplitRule .FinishBehavior .ALWAYS )
165+ .setSticky(false )
166+ .build()
184167 // [END android_activity_embedding_splitPlaceholderRule_kotlin]
185168
186169 // [START android_activity_embedding_addRuleSplitPlaceholderRule_kotlin]
@@ -208,39 +191,26 @@ class ActivityEmbeddingKotlinSnippets {
208191 ruleController.addRule(activityRule)
209192 // [END android_activity_embedding_addRuleActivityRule_kotlin]
210193
211- // [START android_activity_embedding_splitAttributesBuilder_kotlin]
212- val _splitAttributesBuilder : SplitAttributes .Builder = SplitAttributes .Builder ()
213- .setSplitType(SplitAttributes .SplitType .ratio(0.33f ))
214- .setLayoutDirection(SplitAttributes .LayoutDirection .LEFT_TO_RIGHT )
215-
216- if (WindowSdkExtensions .getInstance().extensionVersion >= 6 ) {
217- _splitAttributesBuilder .setDividerAttributes(
218- DividerAttributes .DraggableDividerAttributes .Builder ()
219- .setColor(getColor(R .color.divider_color))
220- .setWidthDp(4 )
221- .setDragRange(DividerAttributes .DragRange .DRAG_RANGE_SYSTEM_DEFAULT )
222- .build()
223- )
224- }
225- val _splitAttributes : SplitAttributes = _splitAttributesBuilder .build()
226- // [END android_activity_embedding_splitAttributesBuilder_kotlin]
194+ }
227195
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]
196+ // [START android_activity_embedding_isActivityEmbedded_kotlin]
197+ fun isActivityEmbedded (activity : Activity ): Boolean {
198+ return ActivityEmbeddingController .getInstance(this ).isActivityEmbedded(activity)
233199 }
200+ // [END android_activity_embedding_isActivityEmbedded_kotlin]
201+
234202 }
235203
204+
236205 // [START android_activity_embedding_DetailActivity_class_kotlin]
237- class DetailActivity : AppCompatActivity () {
206+ class DetailActivity : AppCompatActivity () {
238207 fun onOpenSubdetail () {
239208 startActivity(Intent (this , SubdetailActivity ::class .java))
240209 }
241210 }
242211 // [END android_activity_embedding_DetailActivity_class_kotlin]
243212
213+
244214 // [START android_activity_embedding_SplitInitializer_class_kotlin]
245215 class SplitInitializer : Initializer <RuleController > {
246216
@@ -256,28 +226,31 @@ class ActivityEmbeddingKotlinSnippets {
256226 }
257227 // [END android_activity_embedding_SplitInitializer_class_kotlin]
258228
229+
259230 /* *
260231 * Function used by snippet.
261232 */
262233 fun classForItem (item : Int ): Class <* > { return Class ::class .java }
263234
264235 // [START android_activity_embedding_MenuActivity_class_kotlin]
265- inner class MenuActivity : AppCompatActivity () {
236+ inner class MenuActivity : AppCompatActivity () {
266237 fun onMenuItemSelected (selectedMenuItem : Int ) {
267238 startActivity(Intent (this , classForItem(selectedMenuItem)))
268239 }
269240 }
270241 // [END android_activity_embedding_MenuActivity_class_kotlin]
271242
243+
272244 // [START android_activity_embedding_B_class_kotlin]
273- class B : AppCompatActivity () {
245+ class B : AppCompatActivity () {
274246 fun onOpenC () {
275247 startActivity(Intent (this , C ::class .java))
276248 }
277249 }
278250 // [END android_activity_embedding_B_class_kotlin]
279251
280- class SnippetActivity2 : Activity () {
252+
253+ class SnippetActivity2 : Activity () {
281254
282255 private val filterSet = HashSet <SplitPairFilter >()
283256
@@ -291,11 +264,31 @@ class ActivityEmbeddingKotlinSnippets {
291264 // [END android_activity_embedding_onCreate_RuleController_kotlin]
292265 }
293266
294- class SplitDeviceActivity : AppCompatActivity () {
295267
268+ class SplitDeviceActivity : AppCompatActivity () {
269+
270+ @RequiresApi(VERSION_CODES .N )
296271 @OptIn(ExperimentalWindowApi ::class )
297272 override fun onCreate (savedInstanceState : Bundle ? ) {
298273 super .onCreate(savedInstanceState)
274+
275+ // [START android_activity_embedding_splitAttributesBuilder_kotlin]
276+ val splitAttributesBuilder: SplitAttributes .Builder = SplitAttributes .Builder ()
277+ .setSplitType(SplitAttributes .SplitType .ratio(0.33f ))
278+ .setLayoutDirection(SplitAttributes .LayoutDirection .LEFT_TO_RIGHT )
279+
280+ if (WindowSdkExtensions .getInstance().extensionVersion >= 6 ) {
281+ splitAttributesBuilder.setDividerAttributes(
282+ DividerAttributes .DraggableDividerAttributes .Builder ()
283+ .setColor(getColor(R .color.divider_color))
284+ .setWidthDp(4 )
285+ .setDragRange(DividerAttributes .DragRange .DRAG_RANGE_SYSTEM_DEFAULT )
286+ .build()
287+ )
288+ }
289+ val splitAttributes: SplitAttributes = splitAttributesBuilder.build()
290+ // [END android_activity_embedding_splitAttributesBuilder_kotlin]
291+
299292 val splitController = SplitController .getInstance(this )
300293 // [START android_activity_embedding_onCreate_SplitControllerCallbackAdapter_kotlin]
301294 val layout = layoutInflater.inflate(R .layout.activity_main, null )
@@ -312,7 +305,8 @@ class ActivityEmbeddingKotlinSnippets {
312305 }
313306 }
314307
315- class SnippetActivity3 : AppCompatActivity () {
308+
309+ class SnippetActivity3 : AppCompatActivity () {
316310 override fun onCreate (savedInstanceState : Bundle ? ) {
317311 super .onCreate(savedInstanceState)
318312 setContentView(R .layout.activity_main)
@@ -329,24 +323,26 @@ class ActivityEmbeddingKotlinSnippets {
329323 .setDefaultSplitAttributes(splitAttributes)
330324 .build()
331325
332- SplitController .getInstance(applicationContext).pinTopActivityStack(taskId, pinSplitRule)
326+ SplitController .getInstance(applicationContext)
327+ .pinTopActivityStack(taskId, pinSplitRule)
333328 }
334329 // [END android_activity_embedding_pinButton_kotlin]
335330
336331 // [START android_activity_embedding_getSplitSupportStatus_kotlin]
337332 if (SplitController .getInstance(this ).splitSupportStatus ==
338- SplitController .SplitSupportStatus .SPLIT_AVAILABLE
339- ) {
340- // Device supports split activity features.
333+ SplitController .SplitSupportStatus .SPLIT_AVAILABLE ) {
334+ // Device supports split activity features.
341335 }
342336 // [END android_activity_embedding_getSplitSupportStatus_kotlin]
343337 }
344338 }
345339
340+
346341 // Classes used by snippets.
347- class ListActivity
348- class SubdetailActivity
349- class PlaceholderActivity
350- class ExpandedActivity
351- class C
342+ class ListActivity {}
343+ class SubdetailActivity {}
344+ class PlaceholderActivity {}
345+ class ExpandedActivity {}
346+ class C {}
347+
352348}
0 commit comments