Loading quickstep/AndroidManifest.xml +2 −0 Original line number Diff line number Diff line Loading @@ -124,6 +124,8 @@ android:excludeFromRecents="true" android:screenOrientation="portrait" android:permission="android.permission.REBOOT" android:theme="@style/AllSetTheme" android:label="@string/allset_title" android:exported="true"> <intent-filter> <action android:name="com.android.quickstep.action.GESTURE_ONBOARDING_ALL_SET"/> Loading quickstep/res/layout/activity_allset.xml +7 −6 Original line number Diff line number Diff line Loading @@ -20,8 +20,7 @@ android:paddingStart="@dimen/allset_page_margin_horizontal" android:paddingEnd="@dimen/allset_page_margin_horizontal" android:layoutDirection="locale" android:textDirection="locale" android:background="?android:attr/colorBackground"> android:textDirection="locale"> <LinearLayout android:layout_width="match_parent" Loading Loading @@ -59,13 +58,15 @@ <TextView android:id="@+id/navigation_settings" style="@style/TextAppearance.GestureTutorial.Feedback.Subtitle" android:textSize="14sp" style="@style/TextAppearance.GestureTutorial.LinkText" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_above="@+id/hint" android:gravity="center_horizontal" android:layout_marginBottom="72dp"/> android:gravity="center" android:layout_marginBottom="72dp" android:minHeight="48dp" android:background="?android:attr/selectableItemBackground" android:text="@string/allset_navigation_settings" /> <TextView android:id="@id/hint" Loading quickstep/res/values-night/styles.xml 0 → 100644 +27 −0 Original line number Diff line number Diff line <?xml version="1.0" encoding="utf-8"?> <!-- Copyright (C) 2021 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. --> <resources> <style name="AllSetTheme" parent="@android:style/Theme.DeviceDefault.NoActionBar"> <item name="android:navigationBarColor">@android:color/transparent</item> <item name="android:statusBarColor">@android:color/transparent</item> <item name="android:enforceNavigationBarContrast">false</item> <item name="android:windowLightStatusBar">false</item> <item name="android:windowBackground">#FF000000</item> </style> </resources> No newline at end of file quickstep/res/values/styles.xml +8 −0 Original line number Diff line number Diff line Loading @@ -110,6 +110,14 @@ <item name="android:textSize">14sp</item> </style> <style name="AllSetTheme" parent="@android:style/Theme.DeviceDefault.Light.NoActionBar"> <item name="android:navigationBarColor">@android:color/transparent</item> <item name="android:statusBarColor">@android:color/transparent</item> <item name="android:enforceNavigationBarContrast">false</item> <item name="android:windowLightStatusBar">true</item> <item name="android:windowBackground">#FFFFFFFF</item> </style> <!-- Can be applied to views to color things like ripples and list highlights the workspace text color. Loading quickstep/src/com/android/quickstep/interaction/AllSetActivity.java +41 −72 Original line number Diff line number Diff line Loading @@ -16,23 +16,22 @@ package com.android.quickstep.interaction; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.content.res.Configuration; import android.content.res.TypedArray; import android.graphics.Color; import android.graphics.Typeface; import android.os.Bundle; import android.text.TextPaint; import android.text.method.LinkMovementMethod; import android.util.Log; import android.view.View; import android.view.View.AccessibilityDelegate; import android.view.accessibility.AccessibilityNodeInfo; import android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction; import android.widget.ImageView; import android.widget.TextView; import androidx.annotation.Nullable; import com.android.launcher3.R; import com.android.launcher3.Utilities; import java.net.URISyntaxException; Loading @@ -48,30 +47,22 @@ public class AllSetActivity extends Activity { private static final String EXTRA_ACCENT_COLOR_DARK_MODE = "suwColorAccentDark"; private static final String EXTRA_ACCENT_COLOR_LIGHT_MODE = "suwColorAccentLight"; private int mAccentColor; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_allset); setTitle(R.string.allset_title); final int mode = getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK; mAccentColor = getIntent().getIntExtra( mode == Configuration.UI_MODE_NIGHT_YES ? EXTRA_ACCENT_COLOR_DARK_MODE : EXTRA_ACCENT_COLOR_LIGHT_MODE, /* defValue= */ Color.BLACK); int mode = getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK; boolean isDarkTheme = mode == Configuration.UI_MODE_NIGHT_YES; int accentColor = getIntent().getIntExtra( isDarkTheme ? EXTRA_ACCENT_COLOR_DARK_MODE : EXTRA_ACCENT_COLOR_LIGHT_MODE, isDarkTheme ? Color.WHITE : Color.BLACK); ((ImageView) findViewById(R.id.icon)).getDrawable().mutate().setTint(mAccentColor); ((ImageView) findViewById(R.id.icon)).getDrawable().mutate().setTint(accentColor); TextView navigationSettings = findViewById(R.id.navigation_settings); navigationSettings.setMovementMethod(LinkMovementMethod.getInstance()); AnnotationSpan.LinkInfo linkInfo = new AnnotationSpan.LinkInfo( AnnotationSpan.LinkInfo.DEFAULT_ANNOTATION, new AllSetLinkSpan( /* context= */ this, view -> { TextView tv = findViewById(R.id.navigation_settings); tv.setTextColor(accentColor); tv.setOnClickListener(v -> { try { startActivityForResult( Intent.parseUri(URI_SYSTEM_NAVIGATION_SETTING, 0), 0); Loading @@ -79,55 +70,33 @@ public class AllSetActivity extends Activity { Log.e(LOG_TAG, "Failed to parse system nav settings intent", e); } finish(); })); navigationSettings.setText( AnnotationSpan.linkify(getText(R.string.allset_navigation_settings), linkInfo)); } @Override public void onWindowFocusChanged(boolean hasFocus) { super.onWindowFocusChanged(hasFocus); if (hasFocus) { hideSystemUI(); } } }); private void hideSystemUI() { getWindow().getDecorView().setSystemUiVisibility( View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_FULLSCREEN); getWindow().setNavigationBarColor(Color.TRANSPARENT); findViewById(R.id.hint).setAccessibilityDelegate(new SkipButtonAccessibilityDelegate()); } private final class AllSetLinkSpan extends AnnotationSpan { private final String mFontFamily; private final int mTextSize; /** * Accessibility delegate which exposes a click event without making the view * clickable in touch mode */ private class SkipButtonAccessibilityDelegate extends AccessibilityDelegate { AllSetLinkSpan(Context context, View.OnClickListener listener) { super(listener); TypedArray typedArray = context.obtainStyledAttributes(R.style.TextAppearance_GestureTutorial_LinkText, R.styleable.AllSetLinkSpan); mFontFamily = typedArray.getString(R.styleable.AllSetLinkSpan_android_fontFamily); mTextSize = typedArray.getDimensionPixelSize( R.styleable.AllSetLinkSpan_android_textSize, /* defValue= */ -1); typedArray.recycle(); @Override public AccessibilityNodeInfo createAccessibilityNodeInfo(View host) { AccessibilityNodeInfo info = super.createAccessibilityNodeInfo(host); info.addAction(AccessibilityAction.ACTION_CLICK); info.setClickable(true); return info; } @Override public void updateDrawState(TextPaint ds) { super.updateDrawState(ds); ds.setColor(mAccentColor); ds.setTypeface(Typeface.create(mFontFamily, Typeface.NORMAL)); ds.setUnderlineText(false); if (mTextSize != -1) { ds.setTextSize(mTextSize); public boolean performAccessibilityAction(View host, int action, Bundle args) { if (action == AccessibilityAction.ACTION_CLICK.getId()) { startActivity(Utilities.createHomeIntent()); finish(); return true; } return super.performAccessibilityAction(host, action, args); } } } Loading
quickstep/AndroidManifest.xml +2 −0 Original line number Diff line number Diff line Loading @@ -124,6 +124,8 @@ android:excludeFromRecents="true" android:screenOrientation="portrait" android:permission="android.permission.REBOOT" android:theme="@style/AllSetTheme" android:label="@string/allset_title" android:exported="true"> <intent-filter> <action android:name="com.android.quickstep.action.GESTURE_ONBOARDING_ALL_SET"/> Loading
quickstep/res/layout/activity_allset.xml +7 −6 Original line number Diff line number Diff line Loading @@ -20,8 +20,7 @@ android:paddingStart="@dimen/allset_page_margin_horizontal" android:paddingEnd="@dimen/allset_page_margin_horizontal" android:layoutDirection="locale" android:textDirection="locale" android:background="?android:attr/colorBackground"> android:textDirection="locale"> <LinearLayout android:layout_width="match_parent" Loading Loading @@ -59,13 +58,15 @@ <TextView android:id="@+id/navigation_settings" style="@style/TextAppearance.GestureTutorial.Feedback.Subtitle" android:textSize="14sp" style="@style/TextAppearance.GestureTutorial.LinkText" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_above="@+id/hint" android:gravity="center_horizontal" android:layout_marginBottom="72dp"/> android:gravity="center" android:layout_marginBottom="72dp" android:minHeight="48dp" android:background="?android:attr/selectableItemBackground" android:text="@string/allset_navigation_settings" /> <TextView android:id="@id/hint" Loading
quickstep/res/values-night/styles.xml 0 → 100644 +27 −0 Original line number Diff line number Diff line <?xml version="1.0" encoding="utf-8"?> <!-- Copyright (C) 2021 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. --> <resources> <style name="AllSetTheme" parent="@android:style/Theme.DeviceDefault.NoActionBar"> <item name="android:navigationBarColor">@android:color/transparent</item> <item name="android:statusBarColor">@android:color/transparent</item> <item name="android:enforceNavigationBarContrast">false</item> <item name="android:windowLightStatusBar">false</item> <item name="android:windowBackground">#FF000000</item> </style> </resources> No newline at end of file
quickstep/res/values/styles.xml +8 −0 Original line number Diff line number Diff line Loading @@ -110,6 +110,14 @@ <item name="android:textSize">14sp</item> </style> <style name="AllSetTheme" parent="@android:style/Theme.DeviceDefault.Light.NoActionBar"> <item name="android:navigationBarColor">@android:color/transparent</item> <item name="android:statusBarColor">@android:color/transparent</item> <item name="android:enforceNavigationBarContrast">false</item> <item name="android:windowLightStatusBar">true</item> <item name="android:windowBackground">#FFFFFFFF</item> </style> <!-- Can be applied to views to color things like ripples and list highlights the workspace text color. Loading
quickstep/src/com/android/quickstep/interaction/AllSetActivity.java +41 −72 Original line number Diff line number Diff line Loading @@ -16,23 +16,22 @@ package com.android.quickstep.interaction; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.content.res.Configuration; import android.content.res.TypedArray; import android.graphics.Color; import android.graphics.Typeface; import android.os.Bundle; import android.text.TextPaint; import android.text.method.LinkMovementMethod; import android.util.Log; import android.view.View; import android.view.View.AccessibilityDelegate; import android.view.accessibility.AccessibilityNodeInfo; import android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction; import android.widget.ImageView; import android.widget.TextView; import androidx.annotation.Nullable; import com.android.launcher3.R; import com.android.launcher3.Utilities; import java.net.URISyntaxException; Loading @@ -48,30 +47,22 @@ public class AllSetActivity extends Activity { private static final String EXTRA_ACCENT_COLOR_DARK_MODE = "suwColorAccentDark"; private static final String EXTRA_ACCENT_COLOR_LIGHT_MODE = "suwColorAccentLight"; private int mAccentColor; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_allset); setTitle(R.string.allset_title); final int mode = getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK; mAccentColor = getIntent().getIntExtra( mode == Configuration.UI_MODE_NIGHT_YES ? EXTRA_ACCENT_COLOR_DARK_MODE : EXTRA_ACCENT_COLOR_LIGHT_MODE, /* defValue= */ Color.BLACK); int mode = getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK; boolean isDarkTheme = mode == Configuration.UI_MODE_NIGHT_YES; int accentColor = getIntent().getIntExtra( isDarkTheme ? EXTRA_ACCENT_COLOR_DARK_MODE : EXTRA_ACCENT_COLOR_LIGHT_MODE, isDarkTheme ? Color.WHITE : Color.BLACK); ((ImageView) findViewById(R.id.icon)).getDrawable().mutate().setTint(mAccentColor); ((ImageView) findViewById(R.id.icon)).getDrawable().mutate().setTint(accentColor); TextView navigationSettings = findViewById(R.id.navigation_settings); navigationSettings.setMovementMethod(LinkMovementMethod.getInstance()); AnnotationSpan.LinkInfo linkInfo = new AnnotationSpan.LinkInfo( AnnotationSpan.LinkInfo.DEFAULT_ANNOTATION, new AllSetLinkSpan( /* context= */ this, view -> { TextView tv = findViewById(R.id.navigation_settings); tv.setTextColor(accentColor); tv.setOnClickListener(v -> { try { startActivityForResult( Intent.parseUri(URI_SYSTEM_NAVIGATION_SETTING, 0), 0); Loading @@ -79,55 +70,33 @@ public class AllSetActivity extends Activity { Log.e(LOG_TAG, "Failed to parse system nav settings intent", e); } finish(); })); navigationSettings.setText( AnnotationSpan.linkify(getText(R.string.allset_navigation_settings), linkInfo)); } @Override public void onWindowFocusChanged(boolean hasFocus) { super.onWindowFocusChanged(hasFocus); if (hasFocus) { hideSystemUI(); } } }); private void hideSystemUI() { getWindow().getDecorView().setSystemUiVisibility( View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_FULLSCREEN); getWindow().setNavigationBarColor(Color.TRANSPARENT); findViewById(R.id.hint).setAccessibilityDelegate(new SkipButtonAccessibilityDelegate()); } private final class AllSetLinkSpan extends AnnotationSpan { private final String mFontFamily; private final int mTextSize; /** * Accessibility delegate which exposes a click event without making the view * clickable in touch mode */ private class SkipButtonAccessibilityDelegate extends AccessibilityDelegate { AllSetLinkSpan(Context context, View.OnClickListener listener) { super(listener); TypedArray typedArray = context.obtainStyledAttributes(R.style.TextAppearance_GestureTutorial_LinkText, R.styleable.AllSetLinkSpan); mFontFamily = typedArray.getString(R.styleable.AllSetLinkSpan_android_fontFamily); mTextSize = typedArray.getDimensionPixelSize( R.styleable.AllSetLinkSpan_android_textSize, /* defValue= */ -1); typedArray.recycle(); @Override public AccessibilityNodeInfo createAccessibilityNodeInfo(View host) { AccessibilityNodeInfo info = super.createAccessibilityNodeInfo(host); info.addAction(AccessibilityAction.ACTION_CLICK); info.setClickable(true); return info; } @Override public void updateDrawState(TextPaint ds) { super.updateDrawState(ds); ds.setColor(mAccentColor); ds.setTypeface(Typeface.create(mFontFamily, Typeface.NORMAL)); ds.setUnderlineText(false); if (mTextSize != -1) { ds.setTextSize(mTextSize); public boolean performAccessibilityAction(View host, int action, Bundle args) { if (action == AccessibilityAction.ACTION_CLICK.getId()) { startActivity(Utilities.createHomeIntent()); finish(); return true; } return super.performAccessibilityAction(host, action, args); } } }