Loading quickstep/res/layout/split_instructions_view.xml +9 −3 Original line number Diff line number Diff line Loading @@ -30,9 +30,15 @@ android:id="@+id/split_instructions_text" android:layout_height="wrap_content" android:layout_width="wrap_content" android:gravity="center" android:textColor="?androidprv:attr/textColorOnAccent" android:drawableEnd="@drawable/ic_split_exit" android:drawablePadding="@dimen/split_instructions_drawable_padding" android:text="@string/toast_split_select_app" /> <androidx.appcompat.widget.AppCompatTextView android:id="@+id/split_instructions_text_cancel" android:layout_height="wrap_content" android:layout_width="wrap_content" android:textColor="?androidprv:attr/textColorOnAccent" android:layout_marginStart="@dimen/split_instructions_start_margin_cancel" android:text="@string/toast_split_select_app_cancel" android:visibility="gone"/> </com.android.quickstep.views.SplitInstructionsView> No newline at end of file quickstep/res/values/strings.xml +1 −0 Original line number Diff line number Diff line Loading @@ -230,6 +230,7 @@ <string name="action_split">Split</string> <!-- Label for toast with instructions for split screen selection mode. [CHAR_LIMIT=50] --> <string name="toast_split_select_app">Tap another app to use split screen</string> <string name="toast_split_select_app_cancel"><b>Cancel</b></string> <string name="toast_split_select_cont_desc">Exit split screen selection</string> <!-- Label for toast when app selected for split isn't supported. [CHAR_LIMIT=50] --> <string name="toast_split_app_unsupported">Choose another app to use split screen</string> Loading quickstep/src/com/android/quickstep/util/SplitAnimationController.kt +1 −0 Original line number Diff line number Diff line Loading @@ -252,6 +252,7 @@ class SplitAnimationController(val splitSelectStateController: SplitSelectStateC splitSelectStateController.splitInstructionsView = splitInstructionsView val timings = AnimUtils.getDeviceOverviewToSplitTimings(launcher.deviceProfile.isTablet) val anim = PendingAnimation(100 /*duration */) splitInstructionsView.alpha = 0f anim.setViewAlpha(splitInstructionsView, 1f, Interpolators.clampToProgress(Interpolators.LINEAR, timings.instructionsContainerFadeInStartOffset, Loading quickstep/src/com/android/quickstep/views/SplitInstructionsView.java +11 −34 Original line number Diff line number Diff line Loading @@ -17,14 +17,12 @@ package com.android.quickstep.views; import android.content.Context; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.util.AttributeSet; import android.util.FloatProperty; import android.view.MotionEvent; import android.view.ViewGroup; import android.view.accessibility.AccessibilityNodeInfo; import android.widget.FrameLayout; import android.widget.LinearLayout; import androidx.annotation.Nullable; import androidx.appcompat.widget.AppCompatTextView; Loading @@ -41,9 +39,11 @@ import com.android.launcher3.statemanager.StatefulActivity; * * Appears and disappears concurrently with a FloatingTaskView. */ public class SplitInstructionsView extends FrameLayout { public class SplitInstructionsView extends LinearLayout { private final StatefulActivity mLauncher; private AppCompatTextView mTextView; private AppCompatTextView mInstructionTextView; /** Only used if {@link com.android.wm.shell.FeatureFlags#enableSplitContextual()} is true. */ private AppCompatTextView mCancelTextView; public static final FloatProperty<SplitInstructionsView> UNFOLD = new FloatProperty<SplitInstructionsView>("SplitInstructionsUnfold") { Loading Loading @@ -97,22 +97,13 @@ public class SplitInstructionsView extends FrameLayout { } private void init() { mTextView = findViewById(R.id.split_instructions_text); mInstructionTextView = findViewById(R.id.split_instructions_text); mCancelTextView = findViewById(R.id.split_instructions_text_cancel); if (!FeatureFlags.enableSplitContextually()) { mTextView.setCompoundDrawables(null, null, null, null); return; } mTextView.setOnTouchListener((v, event) -> { if (isTouchInsideRightCompoundDrawable(event)) { if (event.getAction() == MotionEvent.ACTION_UP) { exitSplitSelection(); if (FeatureFlags.enableSplitContextually()) { mCancelTextView.setVisibility(VISIBLE); mCancelTextView.setOnClickListener((v) -> exitSplitSelection()); } return true; } return false; }); } private void exitSplitSelection() { Loading @@ -121,20 +112,6 @@ public class SplitInstructionsView extends FrameLayout { mLauncher.getStateManager().goToState(LauncherState.NORMAL); } private boolean isTouchInsideRightCompoundDrawable(MotionEvent event) { // Get the right compound drawable of the TextView. Drawable rightDrawable = mTextView.getCompoundDrawablesRelative()[2]; // Check if the touch event intersects with the drawable's bounds. if (rightDrawable != null) { // We can get away w/o caring about the Y bounds since it's such a small view, if it's // above/below the drawable just assume they meant to touch it. ¯\_(ツ)_/¯ return event.getX() >= (mTextView.getWidth() - rightDrawable.getBounds().width()); } else { return false; } } @Override public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) { super.onInitializeAccessibilityNodeInfo(info); Loading Loading @@ -172,6 +149,6 @@ public class SplitInstructionsView extends FrameLayout { } public AppCompatTextView getTextView() { return mTextView; return mInstructionTextView; } } res/values/dimens.xml +1 −0 Original line number Diff line number Diff line Loading @@ -429,6 +429,7 @@ <dimen name="split_instructions_drawable_padding">10dp</dimen> <dimen name="split_instructions_bottom_margin_phone_landscape">24dp</dimen> <dimen name="split_instructions_bottom_margin_phone_portrait">60dp</dimen> <dimen name="split_instructions_start_margin_cancel">8dp</dimen> <!-- Workspace grid visualization parameters --> <dimen name="grid_visualization_rounding_radius">28dp</dimen> Loading Loading
quickstep/res/layout/split_instructions_view.xml +9 −3 Original line number Diff line number Diff line Loading @@ -30,9 +30,15 @@ android:id="@+id/split_instructions_text" android:layout_height="wrap_content" android:layout_width="wrap_content" android:gravity="center" android:textColor="?androidprv:attr/textColorOnAccent" android:drawableEnd="@drawable/ic_split_exit" android:drawablePadding="@dimen/split_instructions_drawable_padding" android:text="@string/toast_split_select_app" /> <androidx.appcompat.widget.AppCompatTextView android:id="@+id/split_instructions_text_cancel" android:layout_height="wrap_content" android:layout_width="wrap_content" android:textColor="?androidprv:attr/textColorOnAccent" android:layout_marginStart="@dimen/split_instructions_start_margin_cancel" android:text="@string/toast_split_select_app_cancel" android:visibility="gone"/> </com.android.quickstep.views.SplitInstructionsView> No newline at end of file
quickstep/res/values/strings.xml +1 −0 Original line number Diff line number Diff line Loading @@ -230,6 +230,7 @@ <string name="action_split">Split</string> <!-- Label for toast with instructions for split screen selection mode. [CHAR_LIMIT=50] --> <string name="toast_split_select_app">Tap another app to use split screen</string> <string name="toast_split_select_app_cancel"><b>Cancel</b></string> <string name="toast_split_select_cont_desc">Exit split screen selection</string> <!-- Label for toast when app selected for split isn't supported. [CHAR_LIMIT=50] --> <string name="toast_split_app_unsupported">Choose another app to use split screen</string> Loading
quickstep/src/com/android/quickstep/util/SplitAnimationController.kt +1 −0 Original line number Diff line number Diff line Loading @@ -252,6 +252,7 @@ class SplitAnimationController(val splitSelectStateController: SplitSelectStateC splitSelectStateController.splitInstructionsView = splitInstructionsView val timings = AnimUtils.getDeviceOverviewToSplitTimings(launcher.deviceProfile.isTablet) val anim = PendingAnimation(100 /*duration */) splitInstructionsView.alpha = 0f anim.setViewAlpha(splitInstructionsView, 1f, Interpolators.clampToProgress(Interpolators.LINEAR, timings.instructionsContainerFadeInStartOffset, Loading
quickstep/src/com/android/quickstep/views/SplitInstructionsView.java +11 −34 Original line number Diff line number Diff line Loading @@ -17,14 +17,12 @@ package com.android.quickstep.views; import android.content.Context; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.util.AttributeSet; import android.util.FloatProperty; import android.view.MotionEvent; import android.view.ViewGroup; import android.view.accessibility.AccessibilityNodeInfo; import android.widget.FrameLayout; import android.widget.LinearLayout; import androidx.annotation.Nullable; import androidx.appcompat.widget.AppCompatTextView; Loading @@ -41,9 +39,11 @@ import com.android.launcher3.statemanager.StatefulActivity; * * Appears and disappears concurrently with a FloatingTaskView. */ public class SplitInstructionsView extends FrameLayout { public class SplitInstructionsView extends LinearLayout { private final StatefulActivity mLauncher; private AppCompatTextView mTextView; private AppCompatTextView mInstructionTextView; /** Only used if {@link com.android.wm.shell.FeatureFlags#enableSplitContextual()} is true. */ private AppCompatTextView mCancelTextView; public static final FloatProperty<SplitInstructionsView> UNFOLD = new FloatProperty<SplitInstructionsView>("SplitInstructionsUnfold") { Loading Loading @@ -97,22 +97,13 @@ public class SplitInstructionsView extends FrameLayout { } private void init() { mTextView = findViewById(R.id.split_instructions_text); mInstructionTextView = findViewById(R.id.split_instructions_text); mCancelTextView = findViewById(R.id.split_instructions_text_cancel); if (!FeatureFlags.enableSplitContextually()) { mTextView.setCompoundDrawables(null, null, null, null); return; } mTextView.setOnTouchListener((v, event) -> { if (isTouchInsideRightCompoundDrawable(event)) { if (event.getAction() == MotionEvent.ACTION_UP) { exitSplitSelection(); if (FeatureFlags.enableSplitContextually()) { mCancelTextView.setVisibility(VISIBLE); mCancelTextView.setOnClickListener((v) -> exitSplitSelection()); } return true; } return false; }); } private void exitSplitSelection() { Loading @@ -121,20 +112,6 @@ public class SplitInstructionsView extends FrameLayout { mLauncher.getStateManager().goToState(LauncherState.NORMAL); } private boolean isTouchInsideRightCompoundDrawable(MotionEvent event) { // Get the right compound drawable of the TextView. Drawable rightDrawable = mTextView.getCompoundDrawablesRelative()[2]; // Check if the touch event intersects with the drawable's bounds. if (rightDrawable != null) { // We can get away w/o caring about the Y bounds since it's such a small view, if it's // above/below the drawable just assume they meant to touch it. ¯\_(ツ)_/¯ return event.getX() >= (mTextView.getWidth() - rightDrawable.getBounds().width()); } else { return false; } } @Override public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) { super.onInitializeAccessibilityNodeInfo(info); Loading Loading @@ -172,6 +149,6 @@ public class SplitInstructionsView extends FrameLayout { } public AppCompatTextView getTextView() { return mTextView; return mInstructionTextView; } }
res/values/dimens.xml +1 −0 Original line number Diff line number Diff line Loading @@ -429,6 +429,7 @@ <dimen name="split_instructions_drawable_padding">10dp</dimen> <dimen name="split_instructions_bottom_margin_phone_landscape">24dp</dimen> <dimen name="split_instructions_bottom_margin_phone_portrait">60dp</dimen> <dimen name="split_instructions_start_margin_cancel">8dp</dimen> <!-- Workspace grid visualization parameters --> <dimen name="grid_visualization_rounding_radius">28dp</dimen> Loading