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
@@ -97,22 +81,22 @@ class ActivityEmbeddingKotlinSnippets {
9781 val builder = SplitAttributes .Builder ()
9882 builder.setSplitType(SPLIT_TYPE_HINGE )
9983 return @setSplitAttributesCalculator if (feature?.isSeparating == true ) {
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()
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()
116100 } else {
117101 // No split for tall displays.
118102 builder
@@ -125,9 +109,9 @@ class ActivityEmbeddingKotlinSnippets {
125109
126110 // [START android_activity_embedding_splitPairFilter_kotlin]
127111 val splitPairFilter = SplitPairFilter (
128- ComponentName (this , ListActivity ::class .java),
129- ComponentName (this , DetailActivity ::class .java),
130- null
112+ ComponentName (this , ListActivity ::class .java),
113+ ComponentName (this , DetailActivity ::class .java),
114+ null
131115 )
132116 // [END android_activity_embedding_splitPairFilter_kotlin]
133117
@@ -155,8 +139,8 @@ class ActivityEmbeddingKotlinSnippets {
155139 // [END android_activity_embedding_splitPairRule_kotlin]
156140
157141 // [START android_activity_embedding_ruleController_kotlin]
158- val ruleController = RuleController .getInstance(this )
159- ruleController.addRule(splitPairRule)
142+ val ruleController = RuleController .getInstance(this )
143+ ruleController.addRule(splitPairRule)
160144 // [END android_activity_embedding_ruleController_kotlin]
161145
162146 // [START android_activity_embedding_placeholderActivityFilter_kotlin]
@@ -172,15 +156,15 @@ class ActivityEmbeddingKotlinSnippets {
172156
173157 // [START android_activity_embedding_splitPlaceholderRule_kotlin]
174158 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()
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()
184168 // [END android_activity_embedding_splitPlaceholderRule_kotlin]
185169
186170 // [START android_activity_embedding_addRuleSplitPlaceholderRule_kotlin]
@@ -189,8 +173,8 @@ class ActivityEmbeddingKotlinSnippets {
189173
190174 // [START android_activity_embedding_expandedActivityFilter_kotlin]
191175 val expandedActivityFilter = ActivityFilter (
192- ComponentName (this , ExpandedActivity ::class .java),
193- null
176+ ComponentName (this , ExpandedActivity ::class .java),
177+ null
194178 )
195179 // [END android_activity_embedding_expandedActivityFilter_kotlin]
196180
@@ -215,32 +199,35 @@ class ActivityEmbeddingKotlinSnippets {
215199
216200 if (WindowSdkExtensions .getInstance().extensionVersion >= 6 ) {
217201 _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()
202+ DividerAttributes .DraggableDividerAttributes .Builder ()
203+ .setColor(getColor(R .color.divider_color))
204+ .setWidthDp(4 )
205+ .setDragRange(DividerAttributes .DragRange .DRAG_RANGE_SYSTEM_DEFAULT )
206+ .build()
223207 )
224208 }
225209 val _splitAttributes : SplitAttributes = _splitAttributesBuilder .build()
226210 // [END android_activity_embedding_splitAttributesBuilder_kotlin]
227211
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]
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+
233218 }
234219 }
235220
221+
236222 // [START android_activity_embedding_DetailActivity_class_kotlin]
237- class DetailActivity : AppCompatActivity () {
223+ class DetailActivity : AppCompatActivity () {
238224 fun onOpenSubdetail () {
239- startActivity(Intent (this , SubdetailActivity ::class .java))
225+ startActivity(Intent (this , SubdetailActivity ::class .java))
240226 }
241227 }
242228 // [END android_activity_embedding_DetailActivity_class_kotlin]
243229
230+
244231 // [START android_activity_embedding_SplitInitializer_class_kotlin]
245232 class SplitInitializer : Initializer <RuleController > {
246233
@@ -256,28 +243,31 @@ class ActivityEmbeddingKotlinSnippets {
256243 }
257244 // [END android_activity_embedding_SplitInitializer_class_kotlin]
258245
246+
259247 /* *
260248 * Function used by snippet.
261249 */
262250 fun classForItem (item : Int ): Class <* > { return Class ::class .java }
263251
264252 // [START android_activity_embedding_MenuActivity_class_kotlin]
265- inner class MenuActivity : AppCompatActivity () {
253+ inner class MenuActivity : AppCompatActivity () {
266254 fun onMenuItemSelected (selectedMenuItem : Int ) {
267255 startActivity(Intent (this , classForItem(selectedMenuItem)))
268256 }
269257 }
270258 // [END android_activity_embedding_MenuActivity_class_kotlin]
271259
260+
272261 // [START android_activity_embedding_B_class_kotlin]
273- class B : AppCompatActivity () {
262+ class B : AppCompatActivity () {
274263 fun onOpenC () {
275264 startActivity(Intent (this , C ::class .java))
276265 }
277266 }
278267 // [END android_activity_embedding_B_class_kotlin]
279268
280- class SnippetActivity2 : Activity () {
269+
270+ class SnippetActivity2 : Activity () {
281271
282272 private val filterSet = HashSet <SplitPairFilter >()
283273
@@ -291,7 +281,8 @@ class ActivityEmbeddingKotlinSnippets {
291281 // [END android_activity_embedding_onCreate_RuleController_kotlin]
292282 }
293283
294- class SplitDeviceActivity : AppCompatActivity () {
284+
285+ class SplitDeviceActivity : AppCompatActivity () {
295286
296287 @OptIn(ExperimentalWindowApi ::class )
297288 override fun onCreate (savedInstanceState : Bundle ? ) {
@@ -312,8 +303,9 @@ class ActivityEmbeddingKotlinSnippets {
312303 }
313304 }
314305
315- class SnippetActivity3 : AppCompatActivity () {
316- override fun onCreate (savedInstanceState : Bundle ? ) {
306+
307+ class SnippetActivity3 : AppCompatActivity () {
308+ override fun onCreate (savedInstanceState : Bundle ? ){
317309 super .onCreate(savedInstanceState)
318310 setContentView(R .layout.activity_main)
319311 // [START android_activity_embedding_pinButton_kotlin]
@@ -329,24 +321,26 @@ class ActivityEmbeddingKotlinSnippets {
329321 .setDefaultSplitAttributes(splitAttributes)
330322 .build()
331323
332- SplitController .getInstance(applicationContext).pinTopActivityStack(taskId, pinSplitRule)
324+ SplitController .getInstance(applicationContext)
325+ .pinTopActivityStack(taskId, pinSplitRule)
333326 }
334327 // [END android_activity_embedding_pinButton_kotlin]
335328
336329 // [START android_activity_embedding_getSplitSupportStatus_kotlin]
337330 if (SplitController .getInstance(this ).splitSupportStatus ==
338- SplitController .SplitSupportStatus .SPLIT_AVAILABLE
339- ) {
340- // Device supports split activity features.
331+ SplitController .SplitSupportStatus .SPLIT_AVAILABLE ) {
332+ // Device supports split activity features.
341333 }
342334 // [END android_activity_embedding_getSplitSupportStatus_kotlin]
343335 }
344336 }
345337
338+
346339 // Classes used by snippets.
347- class ListActivity
348- class SubdetailActivity
349- class PlaceholderActivity
350- class ExpandedActivity
351- class C
340+ class ListActivity {}
341+ class SubdetailActivity {}
342+ class PlaceholderActivity {}
343+ class ExpandedActivity {}
344+ class C {}
345+
352346}
0 commit comments