From 465b94591004e2dcef5a7ae65b2c4e8411b338a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Ciche=C5=84ski?= Date: Wed, 16 Mar 2022 07:05:49 +0000 Subject: [PATCH] Add API demo for keep clear areas. Bug: 183746978 Test: manual, via extra logging added in DisplayController#onKeepClearAreasChanged Change-Id: Id291320cdb0ea502c0ff359677f218504c1df597 --- samples/ApiDemos/AndroidManifest.xml | 8 ++ .../res/layout/keep_clear_rects_activity.xml | 63 ++++++++++++++ samples/ApiDemos/res/values/colors.xml | 2 + samples/ApiDemos/res/values/dimens.xml | 28 ++++++ samples/ApiDemos/res/values/strings.xml | 14 +++ .../android/apis/app/KeepClearRects.java | 86 +++++++++++++++++++ 6 files changed, 201 insertions(+) create mode 100644 samples/ApiDemos/res/layout/keep_clear_rects_activity.xml create mode 100644 samples/ApiDemos/res/values/dimens.xml create mode 100644 samples/ApiDemos/src/com/example/android/apis/app/KeepClearRects.java diff --git a/samples/ApiDemos/AndroidManifest.xml b/samples/ApiDemos/AndroidManifest.xml index d971ad623..aad0074b3 100644 --- a/samples/ApiDemos/AndroidManifest.xml +++ b/samples/ApiDemos/AndroidManifest.xml @@ -286,6 +286,14 @@ + + + + + + + + + + + + + + + + + + + diff --git a/samples/ApiDemos/res/values/colors.xml b/samples/ApiDemos/res/values/colors.xml index 147ba8433..a9351e5af 100644 --- a/samples/ApiDemos/res/values/colors.xml +++ b/samples/ApiDemos/res/values/colors.xml @@ -30,6 +30,8 @@ #f0f0 #ffffff00 #ff884488 + #0fff0000 + #0f00ff00 diff --git a/samples/ApiDemos/res/values/dimens.xml b/samples/ApiDemos/res/values/dimens.xml new file mode 100644 index 000000000..74e9f20cb --- /dev/null +++ b/samples/ApiDemos/res/values/dimens.xml @@ -0,0 +1,28 @@ + + + + + + 8dp + + 100dp + + diff --git a/samples/ApiDemos/res/values/strings.xml b/samples/ApiDemos/res/values/strings.xml index 69410a7a4..0ce80558c 100644 --- a/samples/ApiDemos/res/values/strings.xml +++ b/samples/ApiDemos/res/values/strings.xml @@ -73,6 +73,20 @@ Start End + App/Activity/Keep Clear Rects + + This view has android:preferKeepClear property set. + + + Set the bottom right view as keep clear area, via setPreferKeepClear; + + + Set the bottom right view as keep clear area, via setPreferKeepClearRects. + + + Use toggles to turn this into keep clear area. + + App/Activity/Max Aspect Ratio/1:1 App/Activity/Max Aspect Ratio/16:9 App/Activity/Max Aspect Ratio/Any diff --git a/samples/ApiDemos/src/com/example/android/apis/app/KeepClearRects.java b/samples/ApiDemos/src/com/example/android/apis/app/KeepClearRects.java new file mode 100644 index 000000000..7fb0e1c53 --- /dev/null +++ b/samples/ApiDemos/src/com/example/android/apis/app/KeepClearRects.java @@ -0,0 +1,86 @@ +/* + * Copyright (C) 2022 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.android.apis.app; + +import android.app.Activity; +import android.content.Intent; +import android.content.res.Configuration; +import android.graphics.Rect; +import android.os.Bundle; +import android.os.RemoteException; +import android.util.Log; +import android.view.View; +import android.widget.CompoundButton; +import android.widget.RelativeLayout; +import android.widget.Switch; + +import com.example.android.apis.R; + +import java.util.Arrays; +import java.util.List; + +public class KeepClearRects extends Activity { + private static final String EXTRA_SET_PREFER_KEEP_CLEAR = "prefer_keep_clear"; + private static final String EXTRA_SET_PREFER_KEEP_CLEAR_RECTS = "prefer_keep_clear_rects"; + + private RelativeLayout mRootView; + private View mKeepClearView; + private Switch mViewAsRestrictedKeepClearAreaToggle; + private Switch mBottomRightCornerKeepClearAreaToggle; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.keep_clear_rects_activity); + + // Find views + mRootView = findViewById(R.id.container); + mKeepClearView = findViewById(R.id.keep_clear_view_bottom_right); + mViewAsRestrictedKeepClearAreaToggle = findViewById(R.id.set_prefer_keep_clear_toggle); + mBottomRightCornerKeepClearAreaToggle = findViewById( + R.id.set_bottom_right_rectangle_keep_clear_toggle); + + // Add listeners + mViewAsRestrictedKeepClearAreaToggle.setOnCheckedChangeListener(mOnToggleChangedListener); + mBottomRightCornerKeepClearAreaToggle.setOnCheckedChangeListener( + mBottomRightCornerToggleChangedListener); + + // Get defaults + final Intent intent = getIntent(); + mViewAsRestrictedKeepClearAreaToggle.setChecked( + intent.getBooleanExtra(EXTRA_SET_PREFER_KEEP_CLEAR, false)); + mBottomRightCornerKeepClearAreaToggle.setChecked( + intent.getBooleanExtra(EXTRA_SET_PREFER_KEEP_CLEAR_RECTS, false)); + } + + private final CompoundButton.OnCheckedChangeListener mOnToggleChangedListener = + (v, isChecked) -> mKeepClearView.setPreferKeepClear(isChecked); + + private final CompoundButton.OnCheckedChangeListener mBottomRightCornerToggleChangedListener = + (v, isChecked) -> { + if (isChecked) { + mRootView.setPreferKeepClearRects( + Arrays.asList(new Rect( + mKeepClearView.getLeft(), + mKeepClearView.getTop(), + mKeepClearView.getRight(), + mKeepClearView.getBottom()))); + } else { + mRootView.setPreferKeepClearRects(List.of()); + } + }; +}