Skip to content

Commit 0090228

Browse files
authored
Add files via upload
1 parent 583cdce commit 0090228

File tree

2 files changed

+81
-83
lines changed

2 files changed

+81
-83
lines changed

misc/src/main/java/com/example/snippets/ActivityEmbeddingJavaSnippets.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ protected void onCreate(@Nullable Bundle savedInstanceState) {
7474
}
7575
// [END activity_embedding_split_attributes_calculator_java]
7676

77-
// [START activity_embedding_split_attributes_calculator_tabletop_java ]
77+
// [START activity_embedding_split_attributes_calculator_tabletop_java]
7878
if (WindowSdkExtensions.getInstance().getExtensionVersion() >= 2) {
7979
SplitController.getInstance(this).setSplitAttributesCalculator(params -> {
8080
String tag = params.getSplitRuleTag();
@@ -111,7 +111,7 @@ else if (parentConfiguration.screenWidthDp >= 840) {
111111
}
112112
});
113113
}
114-
// [END activity_embedding_split_attributes_calculator_tabletop_java ]
114+
// [END activity_embedding_split_attributes_calculator_tabletop_java]
115115

116116
// [START activity_embedding_splitPairFilter_java]
117117
SplitPairFilter splitPairFilter = new SplitPairFilter(
@@ -131,7 +131,7 @@ else if (parentConfiguration.screenWidthDp >= 840) {
131131
.setSplitType(SplitAttributes.SplitType.ratio(0.33f))
132132
.setLayoutDirection(SplitAttributes.LayoutDirection.LEFT_TO_RIGHT)
133133
.build();
134-
// [START activity_embedding_splitAttributes_java]
134+
// [END activity_embedding_splitAttributes_java]
135135

136136
// [START activity_embedding_splitPairRule_java]
137137
SplitPairRule splitPairRule = new SplitPairRule.Builder(filterSet)
@@ -301,15 +301,15 @@ protected void onCreate(@Nullable Bundle savedInstanceState) {
301301
.addRule(new SplitPairRule.Builder(filterSet).build());
302302
startActivity(new Intent(this, DetailActivity.class));
303303
}
304-
// [START activity_embedding_onCreate_RuleController_java]
304+
// [END activity_embedding_onCreate_RuleController_java]
305305

306306
}
307307

308308

309309
static class SnippetActivity3 extends AppCompatActivity {
310310

311311
@OptIn(markerClass = ExperimentalWindowApi.class)
312-
// [START activity_embedding_onCreate_SplitControllerCallbackAdapter_java'
312+
// [START activity_embedding_onCreate_SplitControllerCallbackAdapter_java]
313313
@Override
314314
protected void onCreate(@Nullable Bundle savedInstanceState) {
315315
super.onCreate(savedInstanceState);
@@ -323,7 +323,7 @@ protected void onCreate(@Nullable Bundle savedInstanceState) {
323323
splitInfoList.isEmpty() ? View.VISIBLE : View.GONE);
324324
});
325325
}
326-
// [END activity_embedding_onCreate_SplitControllerCallbackAdapter_java'
326+
// [END activity_embedding_onCreate_SplitControllerCallbackAdapter_java]
327327

328328
}
329329

misc/src/main/java/com/example/snippets/ActivityEmbeddingKotlinSnippets.kt

Lines changed: 75 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,16 @@
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-
171
package com.example.snippets
182

193
import android.app.Activity
204
import android.content.ComponentName
215
import android.content.Context
226
import android.content.Intent
237
import android.os.Bundle
8+
import android.os.PersistableBundle
249
import android.view.View
2510
import android.widget.Button
2611
import androidx.appcompat.app.AppCompatActivity
2712
import androidx.lifecycle.Lifecycle
13+
import androidx.lifecycle.LifecycleOwner
2814
import androidx.lifecycle.lifecycleScope
2915
import androidx.lifecycle.repeatOnLifecycle
3016
import androidx.startup.Initializer
@@ -40,17 +26,20 @@ import androidx.window.embedding.SplitAttributes
4026
import androidx.window.embedding.SplitAttributes.SplitType.Companion.SPLIT_TYPE_EXPAND
4127
import androidx.window.embedding.SplitAttributes.SplitType.Companion.SPLIT_TYPE_HINGE
4228
import androidx.window.embedding.SplitController
29+
import androidx.window.embedding.SplitInfo
4330
import androidx.window.embedding.SplitPairFilter
4431
import androidx.window.embedding.SplitPairRule
4532
import androidx.window.embedding.SplitPinRule
4633
import androidx.window.embedding.SplitPlaceholderRule
4734
import androidx.window.embedding.SplitRule
35+
import androidx.window.java.embedding.SplitControllerCallbackAdapter
4836
import androidx.window.layout.FoldingFeature
37+
import java.util.concurrent.Executor
4938
import kotlinx.coroutines.launch
5039

5140
class ActivityEmbeddingKotlinSnippets {
5241

53-
class SnippetActivity : Activity() {
42+
class SnippetActivity: Activity() {
5443

5544
private val context = this
5645

@@ -94,22 +83,22 @@ class ActivityEmbeddingKotlinSnippets {
9483
val builder = SplitAttributes.Builder()
9584
builder.setSplitType(SPLIT_TYPE_HINGE)
9685
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()
86+
// Horizontal split for tabletop posture.
87+
builder
88+
.setSplitType(SPLIT_TYPE_HINGE)
89+
.setLayoutDirection(
90+
if (feature.orientation == FoldingFeature.Orientation.HORIZONTAL) {
91+
SplitAttributes.LayoutDirection.BOTTOM_TO_TOP
92+
} else {
93+
SplitAttributes.LayoutDirection.LOCALE
94+
})
95+
.build()
96+
}
97+
else if (parentConfiguration.screenWidthDp >= 840) {
98+
// Side-by-side dual-pane layout for wide displays.
99+
builder
100+
.setLayoutDirection(SplitAttributes.LayoutDirection.LOCALE)
101+
.build()
113102
} else {
114103
// No split for tall displays.
115104
builder
@@ -122,9 +111,9 @@ class ActivityEmbeddingKotlinSnippets {
122111

123112
// [START activity_embedding_splitPairFilter_kotlin]
124113
val splitPairFilter = SplitPairFilter(
125-
ComponentName(this, ListActivity::class.java),
126-
ComponentName(this, DetailActivity::class.java),
127-
null
114+
ComponentName(this, ListActivity::class.java),
115+
ComponentName(this, DetailActivity::class.java),
116+
null
128117
)
129118
// [END activity_embedding_splitPairFilter_kotlin]
130119

@@ -152,8 +141,8 @@ class ActivityEmbeddingKotlinSnippets {
152141
// [END activity_embedding_splitPairRule_kotlin]
153142

154143
// [START activity_embedding_ruleController_kotlin]
155-
val ruleController = RuleController.getInstance(this)
156-
ruleController.addRule(splitPairRule)
144+
val ruleController = RuleController.getInstance(this)
145+
ruleController.addRule(splitPairRule)
157146
// [END activity_embedding_ruleController_kotlin]
158147

159148
// [START activity_embedding_placeholderActivityFilter_kotlin]
@@ -169,15 +158,15 @@ class ActivityEmbeddingKotlinSnippets {
169158

170159
// [START activity_embedding_splitPlaceholderRule_kotlin]
171160
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()
161+
placeholderActivityFilterSet,
162+
Intent(context, PlaceholderActivity::class.java)
163+
).setDefaultSplitAttributes(splitAttributes)
164+
.setMinWidthDp(840)
165+
.setMinSmallestWidthDp(600)
166+
.setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ratio(1.5f))
167+
.setFinishPrimaryWithPlaceholder(SplitRule.FinishBehavior.ALWAYS)
168+
.setSticky(false)
169+
.build()
181170
// [END activity_embedding_splitPlaceholderRule_kotlin]
182171

183172
// [START activity_embedding_addRuleSplitPlaceholderRule_kotlin]
@@ -186,8 +175,8 @@ class ActivityEmbeddingKotlinSnippets {
186175

187176
// [START activity_embedding_expandedActivityFilter_kotlin]
188177
val expandedActivityFilter = ActivityFilter(
189-
ComponentName(this, ExpandedActivity::class.java),
190-
null
178+
ComponentName(this, ExpandedActivity::class.java),
179+
null
191180
)
192181
// [END activity_embedding_expandedActivityFilter_kotlin]
193182

@@ -212,32 +201,35 @@ class ActivityEmbeddingKotlinSnippets {
212201

213202
if (WindowSdkExtensions.getInstance().extensionVersion >= 6) {
214203
_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()
204+
DividerAttributes.DraggableDividerAttributes.Builder()
205+
.setColor(getColor(R.color.divider_color))
206+
.setWidthDp(4)
207+
.setDragRange(DividerAttributes.DragRange.DRAG_RANGE_SYSTEM_DEFAULT)
208+
.build()
220209
)
221210
}
222211
val _splitAttributes: SplitAttributes = _splitAttributesBuilder.build()
223212
// [END activity_embedding_splitAttributesBuilder_kotlin]
224213

225-
// [START activity_embedding_isActivityEmbedded_kotlin]
226-
fun isActivityEmbedded(activity: Activity): Boolean {
227-
return ActivityEmbeddingController.getInstance(this).isActivityEmbedded(activity)
228-
}
229-
// [END activity_embedding_isActivityEmbedded_kotlin]
214+
// [START activity_embedding_isActivityEmbedded_kotlin]
215+
fun isActivityEmbedded(activity: Activity): Boolean {
216+
return ActivityEmbeddingController.getInstance(this).isActivityEmbedded(activity)
217+
}
218+
// [END activity_embedding_isActivityEmbedded_kotlin]
219+
230220
}
231221
}
232222

223+
233224
// [START activity_embedding_DetailActivity_class_kotlin]
234-
class DetailActivity : AppCompatActivity() {
225+
class DetailActivity: AppCompatActivity() {
235226
fun onOpenSubdetail() {
236-
startActivity(Intent(this, SubdetailActivity::class.java))
227+
startActivity(Intent(this, SubdetailActivity::class.java))
237228
}
238229
}
239230
// [END activity_embedding_DetailActivity_class_kotlin]
240231

232+
241233
// [START activity_embedding_SplitInitializer_class_kotlin]
242234
class SplitInitializer : Initializer<RuleController> {
243235

@@ -253,28 +245,31 @@ class ActivityEmbeddingKotlinSnippets {
253245
}
254246
// [END activity_embedding_SplitInitializer_class_kotlin]
255247

248+
256249
/**
257250
* Function used by snippet.
258251
*/
259252
fun classForItem(item: Int): Class<*> { return Class::class.java }
260253

261254
// [START activity_embedding_MenuActivity_class_kotlin]
262-
inner class MenuActivity : AppCompatActivity() {
255+
inner class MenuActivity: AppCompatActivity() {
263256
fun onMenuItemSelected(selectedMenuItem: Int) {
264257
startActivity(Intent(this, classForItem(selectedMenuItem)))
265258
}
266259
}
267260
// [END activity_embedding_MenuActivity_class_kotlin]
268261

262+
269263
// [START activity_embedding_B_class_kotlin]
270-
class B : AppCompatActivity() {
264+
class B: AppCompatActivity() {
271265
fun onOpenC() {
272266
startActivity(Intent(this, C::class.java))
273267
}
274268
}
275269
// [END activity_embedding_B_class_kotlin]
276270

277-
class SnippetActivity2 : Activity() {
271+
272+
class SnippetActivity2: Activity() {
278273

279274
private val filterSet = HashSet<SplitPairFilter>()
280275

@@ -288,13 +283,14 @@ class ActivityEmbeddingKotlinSnippets {
288283
// [END activity_embedding_onCreate_RuleController_kotlin]
289284
}
290285

291-
class SplitDeviceActivity : AppCompatActivity() {
286+
287+
class SplitDeviceActivity: AppCompatActivity() {
292288

293289
@OptIn(ExperimentalWindowApi::class)
294290
override fun onCreate(savedInstanceState: Bundle?) {
295291
super.onCreate(savedInstanceState)
296292
val splitController = SplitController.getInstance(this)
297-
// [START activity_embedding_onCreate_SplitControllerCallbackAdapter_kotlin'
293+
// [START activity_embedding_onCreate_SplitControllerCallbackAdapter_kotlin]
298294
val layout = layoutInflater.inflate(R.layout.activity_main, null)
299295
val view = layout.findViewById<View>(R.id.infoButton)
300296
lifecycleScope.launch {
@@ -305,12 +301,13 @@ class ActivityEmbeddingKotlinSnippets {
305301
}
306302
}
307303
}
308-
// [END activity_embedding_onCreate_SplitControllerCallbackAdapter_kotlin'
304+
// [END activity_embedding_onCreate_SplitControllerCallbackAdapter_kotlin]
309305
}
310306
}
311307

312-
class SnippetActivity3 : AppCompatActivity() {
313-
override fun onCreate(savedInstanceState: Bundle?) {
308+
309+
class SnippetActivity3: AppCompatActivity() {
310+
override fun onCreate(savedInstanceState: Bundle?){
314311
super.onCreate(savedInstanceState)
315312
setContentView(R.layout.activity_main)
316313
// [START activity_embedding_pinButton_kotlin]
@@ -332,20 +329,21 @@ class ActivityEmbeddingKotlinSnippets {
332329

333330
// [START activity_embedding_getSplitSupportStatus_kotlin]
334331
if (SplitController.getInstance(this).splitSupportStatus ==
335-
SplitController.SplitSupportStatus.SPLIT_AVAILABLE
336-
) {
337-
// Device supports split activity features.
332+
SplitController.SplitSupportStatus.SPLIT_AVAILABLE) {
333+
// Device supports split activity features.
338334
}
339335
// [END activity_embedding_getSplitSupportStatus_kotlin]
340336
}
341337
}
342338

339+
343340
/**
344341
* Used by snippets.
345342
*/
346-
class ListActivity
347-
class SubdetailActivity
348-
class PlaceholderActivity
349-
class ExpandedActivity
350-
class C
343+
class ListActivity {}
344+
class SubdetailActivity {}
345+
class PlaceholderActivity {}
346+
class ExpandedActivity {}
347+
class C {}
348+
351349
}

0 commit comments

Comments
 (0)