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
204import android.content.ComponentName
215import android.content.Context
226import android.content.Intent
7+ import android.os.Build.VERSION_CODES
238import android.os.Bundle
249import android.view.View
2510import android.widget.Button
11+ import androidx.annotation.RequiresApi
2612import androidx.appcompat.app.AppCompatActivity
2713import androidx.lifecycle.Lifecycle
2814import androidx.lifecycle.lifecycleScope
@@ -50,10 +36,11 @@ import kotlinx.coroutines.launch
5036
5137class ActivityEmbeddingKotlinSnippets {
5238
53- class SnippetActivity : Activity () {
39+ class SnippetActivity : Activity () {
5440
5541 private val context = this
5642
43+ @RequiresApi(api= VERSION_CODES .N )
5744 override fun onCreate (savedInstanceState : Bundle ? ) {
5845 super .onCreate(savedInstanceState)
5946
@@ -94,22 +81,22 @@ class ActivityEmbeddingKotlinSnippets {
9481 val builder = SplitAttributes .Builder ()
9582 builder.setSplitType(SPLIT_TYPE_HINGE )
9683 return @setSplitAttributesCalculator if (feature?.isSeparating == true ) {
97- // Horizontal split for tabletop posture.
98- builder
99- .setSplitType(SPLIT_TYPE_HINGE )
100- .setLayoutDirection(
101- if (feature.orientation == FoldingFeature .Orientation .HORIZONTAL ) {
102- SplitAttributes .LayoutDirection .BOTTOM_TO_TOP
103- } else {
104- SplitAttributes .LayoutDirection .LOCALE
105- }
106- )
107- .build()
108- } else if (parentConfiguration.screenWidthDp >= 840 ) {
109- // Side-by-side dual-pane layout for wide displays.
110- builder
111- .setLayoutDirection(SplitAttributes .LayoutDirection .LOCALE )
112- .build()
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()
113100 } else {
114101 // No split for tall displays.
115102 builder
@@ -122,9 +109,9 @@ class ActivityEmbeddingKotlinSnippets {
122109
123110 // [START android_activity_embedding_splitPairFilter_kotlin]
124111 val splitPairFilter = SplitPairFilter (
125- ComponentName (this , ListActivity ::class .java),
126- ComponentName (this , DetailActivity ::class .java),
127- null
112+ ComponentName (this , ListActivity ::class .java),
113+ ComponentName (this , DetailActivity ::class .java),
114+ null
128115 )
129116 // [END android_activity_embedding_splitPairFilter_kotlin]
130117
@@ -152,8 +139,8 @@ class ActivityEmbeddingKotlinSnippets {
152139 // [END android_activity_embedding_splitPairRule_kotlin]
153140
154141 // [START android_activity_embedding_ruleController_kotlin]
155- val ruleController = RuleController .getInstance(this )
156- ruleController.addRule(splitPairRule)
142+ val ruleController = RuleController .getInstance(this )
143+ ruleController.addRule(splitPairRule)
157144 // [END android_activity_embedding_ruleController_kotlin]
158145
159146 // [START android_activity_embedding_placeholderActivityFilter_kotlin]
@@ -169,15 +156,15 @@ class ActivityEmbeddingKotlinSnippets {
169156
170157 // [START android_activity_embedding_splitPlaceholderRule_kotlin]
171158 val splitPlaceholderRule = SplitPlaceholderRule .Builder (
172- placeholderActivityFilterSet,
173- Intent (context, PlaceholderActivity ::class .java)
174- ).setDefaultSplitAttributes(splitAttributes)
175- .setMinWidthDp(840 )
176- .setMinSmallestWidthDp(600 )
177- .setMaxAspectRatioInPortrait(EmbeddingAspectRatio .ratio(1.5f ))
178- .setFinishPrimaryWithPlaceholder(SplitRule .FinishBehavior .ALWAYS )
179- .setSticky(false )
180- .build()
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()
181168 // [END android_activity_embedding_splitPlaceholderRule_kotlin]
182169
183170 // [START android_activity_embedding_addRuleSplitPlaceholderRule_kotlin]
@@ -186,8 +173,8 @@ class ActivityEmbeddingKotlinSnippets {
186173
187174 // [START android_activity_embedding_expandedActivityFilter_kotlin]
188175 val expandedActivityFilter = ActivityFilter (
189- ComponentName (this , ExpandedActivity ::class .java),
190- null
176+ ComponentName (this , ExpandedActivity ::class .java),
177+ null
191178 )
192179 // [END android_activity_embedding_expandedActivityFilter_kotlin]
193180
@@ -212,32 +199,35 @@ class ActivityEmbeddingKotlinSnippets {
212199
213200 if (WindowSdkExtensions .getInstance().extensionVersion >= 6 ) {
214201 _splitAttributesBuilder .setDividerAttributes(
215- DividerAttributes .DraggableDividerAttributes .Builder ()
216- .setColor(getColor(R .color.divider_color))
217- .setWidthDp(4 )
218- .setDragRange(DividerAttributes .DragRange .DRAG_RANGE_SYSTEM_DEFAULT )
219- .build()
202+ DividerAttributes .DraggableDividerAttributes .Builder ()
203+ .setColor(getColor(R .color.divider_color))
204+ .setWidthDp(4 )
205+ .setDragRange(DividerAttributes .DragRange .DRAG_RANGE_SYSTEM_DEFAULT )
206+ .build()
220207 )
221208 }
222209 val _splitAttributes : SplitAttributes = _splitAttributesBuilder .build()
223210 // [END android_activity_embedding_splitAttributesBuilder_kotlin]
224211
225- // [START android_activity_embedding_isActivityEmbedded_kotlin]
226- fun isActivityEmbedded (activity : Activity ): Boolean {
227- return ActivityEmbeddingController .getInstance(this ).isActivityEmbedded(activity)
228- }
229- // [END android_activity_embedding_isActivityEmbedded_kotlin]
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+
230218 }
231219 }
232220
221+
233222 // [START android_activity_embedding_DetailActivity_class_kotlin]
234- class DetailActivity : AppCompatActivity () {
223+ class DetailActivity : AppCompatActivity () {
235224 fun onOpenSubdetail () {
236- startActivity(Intent (this , SubdetailActivity ::class .java))
225+ startActivity(Intent (this , SubdetailActivity ::class .java))
237226 }
238227 }
239228 // [END android_activity_embedding_DetailActivity_class_kotlin]
240229
230+
241231 // [START android_activity_embedding_SplitInitializer_class_kotlin]
242232 class SplitInitializer : Initializer <RuleController > {
243233
@@ -253,28 +243,31 @@ class ActivityEmbeddingKotlinSnippets {
253243 }
254244 // [END android_activity_embedding_SplitInitializer_class_kotlin]
255245
246+
256247 /* *
257248 * Function used by snippet.
258249 */
259250 fun classForItem (item : Int ): Class <* > { return Class ::class .java }
260251
261252 // [START android_activity_embedding_MenuActivity_class_kotlin]
262- inner class MenuActivity : AppCompatActivity () {
253+ inner class MenuActivity : AppCompatActivity () {
263254 fun onMenuItemSelected (selectedMenuItem : Int ) {
264255 startActivity(Intent (this , classForItem(selectedMenuItem)))
265256 }
266257 }
267258 // [END android_activity_embedding_MenuActivity_class_kotlin]
268259
260+
269261 // [START android_activity_embedding_B_class_kotlin]
270- class B : AppCompatActivity () {
262+ class B : AppCompatActivity () {
271263 fun onOpenC () {
272264 startActivity(Intent (this , C ::class .java))
273265 }
274266 }
275267 // [END android_activity_embedding_B_class_kotlin]
276268
277- class SnippetActivity2 : Activity () {
269+
270+ class SnippetActivity2 : Activity () {
278271
279272 private val filterSet = HashSet <SplitPairFilter >()
280273
@@ -288,7 +281,8 @@ class ActivityEmbeddingKotlinSnippets {
288281 // [END android_activity_embedding_onCreate_RuleController_kotlin]
289282 }
290283
291- class SplitDeviceActivity : AppCompatActivity () {
284+
285+ class SplitDeviceActivity : AppCompatActivity () {
292286
293287 @OptIn(ExperimentalWindowApi ::class )
294288 override fun onCreate (savedInstanceState : Bundle ? ) {
@@ -309,8 +303,9 @@ class ActivityEmbeddingKotlinSnippets {
309303 }
310304 }
311305
312- class SnippetActivity3 : AppCompatActivity () {
313- override fun onCreate (savedInstanceState : Bundle ? ) {
306+
307+ class SnippetActivity3 : AppCompatActivity () {
308+ override fun onCreate (savedInstanceState : Bundle ? ){
314309 super .onCreate(savedInstanceState)
315310 setContentView(R .layout.activity_main)
316311 // [START android_activity_embedding_pinButton_kotlin]
@@ -332,20 +327,19 @@ class ActivityEmbeddingKotlinSnippets {
332327
333328 // [START android_activity_embedding_getSplitSupportStatus_kotlin]
334329 if (SplitController .getInstance(this ).splitSupportStatus ==
335- SplitController .SplitSupportStatus .SPLIT_AVAILABLE
336- ) {
337- // Device supports split activity features.
330+ SplitController .SplitSupportStatus .SPLIT_AVAILABLE ) {
331+ // Device supports split activity features.
338332 }
339333 // [END android_activity_embedding_getSplitSupportStatus_kotlin]
340334 }
341335 }
342336
343- /* *
344- * Classes used by snippets.
345- */
346- class ListActivity
347- class SubdetailActivity
348- class PlaceholderActivity
349- class ExpandedActivity
350- class C
337+
338+ // Classes used by snippets.
339+ class ListActivity {}
340+ class SubdetailActivity {}
341+ class PlaceholderActivity {}
342+ class ExpandedActivity {}
343+ class C {}
344+
351345}
0 commit comments