Skip to content

Commit 7e3f19c

Browse files
authored
Reorganized files to group related snippets.
1 parent 2556ad2 commit 7e3f19c

File tree

2 files changed

+113
-88
lines changed

2 files changed

+113
-88
lines changed

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

Lines changed: 40 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,7 @@
4242

4343
public class ActivityEmbeddingJavaSnippets {
4444

45-
static class SnippetsActivity extends Activity {
46-
47-
private Context context;
45+
static class SplitAttributesCalculatorSnippetsActivity extends AppCompatActivity {
4846

4947
@RequiresApi(api=VERSION_CODES.N)
5048
@Override
@@ -115,6 +113,17 @@ else if (parentConfiguration.screenWidthDp >= 840) {
115113
}
116114
// [END android_activity_embedding_split_attributes_calculator_tabletop_java]
117115

116+
}
117+
}
118+
119+
static class SplitRuleSnippetsActivity extends AppCompatActivity {
120+
121+
private Context context;
122+
123+
@Override
124+
protected void onCreate(@Nullable Bundle savedInstanceState) {
125+
super.onCreate(savedInstanceState);
126+
118127
// [START android_activity_embedding_splitPairFilter_java]
119128
SplitPairFilter splitPairFilter = new SplitPairFilter(
120129
new ComponentName(this, ListActivity.class),
@@ -215,6 +224,31 @@ boolean isActivityEmbedded(Activity activity) {
215224

216225
}
217226

227+
static class SplitAttributesBuilderSnippetsActivity extends AppCompatActivity {
228+
229+
@Override
230+
protected void onCreate(@Nullable Bundle savedInstanceState) {
231+
super.onCreate(savedInstanceState);
232+
233+
// [START android_activity_embedding_splitAttributesBuilder_java]
234+
SplitAttributes.Builder splitAttributesBuilder = new SplitAttributes.Builder()
235+
.setSplitType(SplitAttributes.SplitType.ratio(0.33f))
236+
.setLayoutDirection(SplitAttributes.LayoutDirection.LEFT_TO_RIGHT);
237+
238+
if (WindowSdkExtensions.getInstance().getExtensionVersion() >= 6) {
239+
splitAttributesBuilder.setDividerAttributes(
240+
new DividerAttributes.DraggableDividerAttributes.Builder()
241+
.setColor(ContextCompat.getColor(this, R.color.divider_color))
242+
.setWidthDp(4)
243+
.setDragRange(DividerAttributes.DragRange.DRAG_RANGE_SYSTEM_DEFAULT)
244+
.build()
245+
);
246+
}
247+
SplitAttributes _splitAttributes = splitAttributesBuilder.build();
248+
// [END android_activity_embedding_splitAttributesBuilder_java]
249+
250+
}
251+
}
218252

219253
/** @noinspection InnerClassMayBeStatic */
220254
// [START android_activity_embedding_DetailActivity_class_java]
@@ -274,7 +308,7 @@ void onOpenC() {
274308
// [END android_activity_embedding_B_class_java]
275309

276310

277-
static class SnippetActivity2 extends Activity {
311+
static class RuleControllerSnippetsActivity extends Activity {
278312

279313
private Set<SplitPairFilter> filterSet = new HashSet<>();
280314

@@ -291,7 +325,7 @@ protected void onCreate(@Nullable Bundle savedInstanceState) {
291325
}
292326

293327

294-
static class SnippetActivity3 extends AppCompatActivity {
328+
static class SplitDeviceActivity extends AppCompatActivity {
295329

296330
@OptIn(markerClass = ExperimentalWindowApi.class)
297331
// [START android_activity_embedding_onCreate_SplitControllerCallbackAdapter_java]
@@ -312,30 +346,13 @@ protected void onCreate(@Nullable Bundle savedInstanceState) {
312346

313347
}
314348

315-
static class SnippetActivity4 extends Activity {
349+
static class ActivityPinningSnippetsActivity extends Activity {
316350

317351
@Override
318352
protected void onCreate(@Nullable Bundle savedInstanceState) {
319353
super.onCreate(savedInstanceState);
320354
setContentView(R.layout.activity_main);
321355

322-
// [START android_activity_embedding_splitAttributesBuilder_java]
323-
SplitAttributes.Builder splitAttributesBuilder = new SplitAttributes.Builder()
324-
.setSplitType(SplitAttributes.SplitType.ratio(0.33f))
325-
.setLayoutDirection(SplitAttributes.LayoutDirection.LEFT_TO_RIGHT);
326-
327-
if (WindowSdkExtensions.getInstance().getExtensionVersion() >= 6) {
328-
splitAttributesBuilder.setDividerAttributes(
329-
new DividerAttributes.DraggableDividerAttributes.Builder()
330-
.setColor(ContextCompat.getColor(this, R.color.divider_color))
331-
.setWidthDp(4)
332-
.setDragRange(DividerAttributes.DragRange.DRAG_RANGE_SYSTEM_DEFAULT)
333-
.build()
334-
);
335-
}
336-
SplitAttributes _splitAttributes = splitAttributesBuilder.build();
337-
// [END android_activity_embedding_splitAttributesBuilder_java]
338-
339356
// [START android_activity_embedding_pinButton_java]
340357
Button pinButton = findViewById(R.id.pinButton);
341358
pinButton.setOnClickListener( (view) -> {

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

Lines changed: 73 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,3 @@
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
@@ -31,7 +15,6 @@ import androidx.lifecycle.lifecycleScope
3115
import androidx.lifecycle.repeatOnLifecycle
3216
import androidx.startup.Initializer
3317
import androidx.window.WindowSdkExtensions
34-
import androidx.window.core.ExperimentalWindowApi
3518
import androidx.window.embedding.ActivityEmbeddingController
3619
import androidx.window.embedding.ActivityFilter
3720
import androidx.window.embedding.ActivityRule
@@ -52,11 +35,8 @@ import kotlinx.coroutines.launch
5235

5336
class ActivityEmbeddingKotlinSnippets {
5437

55-
class SnippetActivity : Activity() {
56-
57-
private val context = this
38+
class SplitAttributesCalculatorSnippetsActivity: AppCompatActivity() {
5839

59-
@RequiresApi(api = VERSION_CODES.N)
6040
override fun onCreate(savedInstanceState: Bundle?) {
6141
super.onCreate(savedInstanceState)
6242

@@ -105,8 +85,7 @@ class ActivityEmbeddingKotlinSnippets {
10585
SplitAttributes.LayoutDirection.BOTTOM_TO_TOP
10686
} else {
10787
SplitAttributes.LayoutDirection.LOCALE
108-
}
109-
)
88+
})
11089
.build()
11190
} else if (parentConfiguration.screenWidthDp >= 840) {
11291
// Side-by-side dual-pane layout for wide displays.
@@ -123,6 +102,17 @@ class ActivityEmbeddingKotlinSnippets {
123102
}
124103
// [END android_activity_embedding_split_attributes_calculator_tabletop_kotlin]
125104

105+
}
106+
}
107+
108+
class SplitRuleSnippetsActivity: AppCompatActivity() {
109+
110+
private val context = this
111+
112+
@RequiresApi(api=VERSION_CODES.N)
113+
override fun onCreate(savedInstanceState: Bundle?) {
114+
super.onCreate(savedInstanceState)
115+
126116
// [START android_activity_embedding_splitPairFilter_kotlin]
127117
val splitPairFilter = SplitPairFilter(
128118
ComponentName(this, ListActivity::class.java),
@@ -172,15 +162,15 @@ class ActivityEmbeddingKotlinSnippets {
172162

173163
// [START android_activity_embedding_splitPlaceholderRule_kotlin]
174164
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()
165+
placeholderActivityFilterSet,
166+
Intent(context, PlaceholderActivity::class.java)
167+
).setDefaultSplitAttributes(splitAttributes)
168+
.setMinWidthDp(840)
169+
.setMinSmallestWidthDp(600)
170+
.setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ratio(1.5f))
171+
.setFinishPrimaryWithPlaceholder(SplitRule.FinishBehavior.ALWAYS)
172+
.setSticky(false)
173+
.build()
184174
// [END android_activity_embedding_splitPlaceholderRule_kotlin]
185175

186176
// [START android_activity_embedding_addRuleSplitPlaceholderRule_kotlin]
@@ -207,23 +197,53 @@ class ActivityEmbeddingKotlinSnippets {
207197
// [START android_activity_embedding_addRuleActivityRule_kotlin]
208198
ruleController.addRule(activityRule)
209199
// [END android_activity_embedding_addRuleActivityRule_kotlin]
200+
210201
}
211202

212203
// [START android_activity_embedding_isActivityEmbedded_kotlin]
213204
fun isActivityEmbedded(activity: Activity): Boolean {
214205
return ActivityEmbeddingController.getInstance(this).isActivityEmbedded(activity)
215206
}
216207
// [END android_activity_embedding_isActivityEmbedded_kotlin]
208+
209+
}
210+
211+
class SplitAttributesBuilderSnippetsActivity: AppCompatActivity() {
212+
213+
@RequiresApi(VERSION_CODES.M)
214+
override fun onCreate(savedInstanceState: Bundle?) {
215+
super.onCreate(savedInstanceState)
216+
217+
// [START android_activity_embedding_splitAttributesBuilder_kotlin]
218+
val splitAttributesBuilder: SplitAttributes.Builder = SplitAttributes.Builder()
219+
.setSplitType(SplitAttributes.SplitType.ratio(0.33f))
220+
.setLayoutDirection(SplitAttributes.LayoutDirection.LEFT_TO_RIGHT)
221+
222+
if (WindowSdkExtensions.getInstance().extensionVersion >= 6) {
223+
splitAttributesBuilder.setDividerAttributes(
224+
DividerAttributes.DraggableDividerAttributes.Builder()
225+
.setColor(getColor(R.color.divider_color))
226+
.setWidthDp(4)
227+
.setDragRange(DividerAttributes.DragRange.DRAG_RANGE_SYSTEM_DEFAULT)
228+
.build()
229+
)
230+
}
231+
val splitAttributes: SplitAttributes = splitAttributesBuilder.build()
232+
// [END android_activity_embedding_splitAttributesBuilder_kotlin]
233+
234+
}
217235
}
218236

237+
219238
// [START android_activity_embedding_DetailActivity_class_kotlin]
220-
class DetailActivity : AppCompatActivity() {
239+
class DetailActivity: AppCompatActivity() {
221240
fun onOpenSubdetail() {
222241
startActivity(Intent(this, SubdetailActivity::class.java))
223242
}
224243
}
225244
// [END android_activity_embedding_DetailActivity_class_kotlin]
226245

246+
227247
// [START android_activity_embedding_SplitInitializer_class_kotlin]
228248
class SplitInitializer : Initializer<RuleController> {
229249

@@ -239,28 +259,31 @@ class ActivityEmbeddingKotlinSnippets {
239259
}
240260
// [END android_activity_embedding_SplitInitializer_class_kotlin]
241261

262+
242263
/**
243264
* Function used by snippet.
244265
*/
245266
fun classForItem(item: Int): Class<*> { return Class::class.java }
246267

247268
// [START android_activity_embedding_MenuActivity_class_kotlin]
248-
inner class MenuActivity : AppCompatActivity() {
269+
inner class MenuActivity: AppCompatActivity() {
249270
fun onMenuItemSelected(selectedMenuItem: Int) {
250271
startActivity(Intent(this, classForItem(selectedMenuItem)))
251272
}
252273
}
253274
// [END android_activity_embedding_MenuActivity_class_kotlin]
254275

276+
255277
// [START android_activity_embedding_B_class_kotlin]
256-
class B : AppCompatActivity() {
278+
class B: AppCompatActivity() {
257279
fun onOpenC() {
258280
startActivity(Intent(this, C::class.java))
259281
}
260282
}
261283
// [END android_activity_embedding_B_class_kotlin]
262284

263-
class SnippetActivity2 : Activity() {
285+
286+
class RuleControllerSnippetsActivity: Activity() {
264287

265288
private val filterSet = HashSet<SplitPairFilter>()
266289

@@ -274,30 +297,12 @@ class ActivityEmbeddingKotlinSnippets {
274297
// [END android_activity_embedding_onCreate_RuleController_kotlin]
275298
}
276299

277-
class SplitDeviceActivity : AppCompatActivity() {
278300

279-
@RequiresApi(VERSION_CODES.N)
280-
@OptIn(ExperimentalWindowApi::class)
301+
class SplitDeviceActivity: AppCompatActivity() {
302+
281303
override fun onCreate(savedInstanceState: Bundle?) {
282304
super.onCreate(savedInstanceState)
283305

284-
// [START android_activity_embedding_splitAttributesBuilder_kotlin]
285-
val splitAttributesBuilder: SplitAttributes.Builder = SplitAttributes.Builder()
286-
.setSplitType(SplitAttributes.SplitType.ratio(0.33f))
287-
.setLayoutDirection(SplitAttributes.LayoutDirection.LEFT_TO_RIGHT)
288-
289-
if (WindowSdkExtensions.getInstance().extensionVersion >= 6) {
290-
splitAttributesBuilder.setDividerAttributes(
291-
DividerAttributes.DraggableDividerAttributes.Builder()
292-
.setColor(getColor(R.color.divider_color))
293-
.setWidthDp(4)
294-
.setDragRange(DividerAttributes.DragRange.DRAG_RANGE_SYSTEM_DEFAULT)
295-
.build()
296-
)
297-
}
298-
val splitAttributes: SplitAttributes = splitAttributesBuilder.build()
299-
// [END android_activity_embedding_splitAttributesBuilder_kotlin]
300-
301306
val splitController = SplitController.getInstance(this)
302307
// [START android_activity_embedding_onCreate_SplitControllerCallbackAdapter_kotlin]
303308
val layout = layoutInflater.inflate(R.layout.activity_main, null)
@@ -314,10 +319,12 @@ class ActivityEmbeddingKotlinSnippets {
314319
}
315320
}
316321

317-
class SnippetActivity3 : AppCompatActivity() {
322+
323+
class ActivityPinningSnippetsActivity: AppCompatActivity() {
318324
override fun onCreate(savedInstanceState: Bundle?) {
319325
super.onCreate(savedInstanceState)
320326
setContentView(R.layout.activity_main)
327+
321328
// [START android_activity_embedding_pinButton_kotlin]
322329
val pinButton: Button = findViewById(R.id.pinButton)
323330
pinButton.setOnClickListener {
@@ -338,18 +345,19 @@ class ActivityEmbeddingKotlinSnippets {
338345

339346
// [START android_activity_embedding_getSplitSupportStatus_kotlin]
340347
if (SplitController.getInstance(this).splitSupportStatus ==
341-
SplitController.SplitSupportStatus.SPLIT_AVAILABLE
342-
) {
343-
// Device supports split activity features.
348+
SplitController.SplitSupportStatus.SPLIT_AVAILABLE) {
349+
// Device supports split activity features.
344350
}
345351
// [END android_activity_embedding_getSplitSupportStatus_kotlin]
346352
}
347353
}
348354

355+
349356
// Classes used by snippets.
350-
class ListActivity
351-
class SubdetailActivity
352-
class PlaceholderActivity
353-
class ExpandedActivity
354-
class C
357+
class ListActivity {}
358+
class SubdetailActivity {}
359+
class PlaceholderActivity {}
360+
class ExpandedActivity {}
361+
class C {}
362+
355363
}

0 commit comments

Comments
 (0)