Update font/display size pages for support large screen in SuW
- Follow the SuW design of the UI guideline.
- Add the footer button for each pages.
- Add a new AccessibilityScreenSizeForSetupWizardActivity for SuW.
- Add suw_font_size_fragment.xml and suw_screen_zoom_fragment.xml
for each fragment.
- Shorten 50% of the preview height.
Bug: 194447311
Fixes: 199369859
Test: manual test
Test: make RunSettingsRoboTests -j ROBOTEST_FILTER=com.android.settings.accessibility
Test: make RunSettingsRoboTests -j ROBOTEST_FILTER=com.android.settings.display
Change-Id: I2685e96d37d542490521ec24cfce490f87cbd88d
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index a34713d..f113f2f 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -1680,6 +1680,10 @@
</activity-alias>
<activity
+ android:name=".accessibility.AccessibilityScreenSizeForSetupWizardActivity"
+ android:exported="false"/>
+
+ <activity
android:name="Settings$AccessibilityDaltonizerSettingsActivity"
android:exported="true"
android:label="@string/accessibility_display_daltonizer_preference_title">
diff --git a/res/layout/accessibility_screen_size_setup_wizard.xml b/res/layout/accessibility_screen_size_setup_wizard.xml
new file mode 100644
index 0000000..e4bc55b
--- /dev/null
+++ b/res/layout/accessibility_screen_size_setup_wizard.xml
@@ -0,0 +1,31 @@
+<?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.
+-->
+<com.google.android.setupdesign.GlifLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ android:id="@+id/setup_wizard_layout"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:icon="@drawable/ic_accessibility_visibility"
+ app:sucHeaderText="@string/title_font_size"
+ app:sudDescriptionText="@string/short_summary_font_size">
+
+ <FrameLayout
+ android:id="@+id/content_frame"
+ android:layout_marginTop="@dimen/preview_size_top_margin"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"/>
+</com.google.android.setupdesign.GlifLayout>
\ No newline at end of file
diff --git a/res/layout/suw_font_size_fragment.xml b/res/layout/suw_font_size_fragment.xml
new file mode 100644
index 0000000..0e03a69
--- /dev/null
+++ b/res/layout/suw_font_size_fragment.xml
@@ -0,0 +1,86 @@
+<?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.
+-->
+<androidx.core.widget.NestedScrollView
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:fillViewport="true">
+
+ <LinearLayout
+ android:orientation="vertical"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content">
+
+ <include layout="@layout/suw_preview_seek_bar_view_pager"/>
+
+ <LinearLayout
+ android:orientation="vertical"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:paddingStart="?android:attr/listPreferredItemPaddingStart"
+ android:paddingEnd="?android:attr/listPreferredItemPaddingEnd">
+
+ <com.android.settings.widget.DotsPageIndicator
+ android:id="@+id/page_indicator"
+ style="@style/PreviewPagerPageIndicator"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center_horizontal"
+ android:padding="3dp"/>
+
+ <TextView
+ android:id="@+id/current_label"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center_horizontal"
+ android:padding="6dp"
+ android:textAppearance="@android:style/TextAppearance.DeviceDefault.Widget.TextView"
+ android:elevation="2dp"/>
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:gravity="center_vertical"
+ android:paddingTop="8dp">
+
+ <ImageView
+ android:id="@+id/smaller"
+ android:src="@drawable/ic_font_size_16dp"
+ android:contentDescription="@string/font_size_make_smaller_desc"
+ style="@style/screen_size_imageview_style"/>
+
+ <com.android.settings.widget.LabeledSeekBar
+ android:id="@+id/seek_bar"
+ android:layout_width="0dp"
+ android:layout_height="48dp"
+ android:layout_weight="1"
+ style="@android:style/Widget.Material.SeekBar.Discrete"/>
+
+ <ImageView
+ android:id="@+id/larger"
+ android:src="@drawable/ic_font_size_24dp"
+ android:contentDescription="@string/font_size_make_larger_desc"
+ style="@style/screen_size_imageview_style"/>
+ </LinearLayout>
+
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@string/font_size_summary"
+ android:textAppearance="@*android:style/TextAppearance.DeviceDefault.Subhead"/>
+ </LinearLayout>
+ </LinearLayout>
+</androidx.core.widget.NestedScrollView>
diff --git a/res/layout/suw_preview_seek_bar_view_pager.xml b/res/layout/suw_preview_seek_bar_view_pager.xml
new file mode 100644
index 0000000..71ec5f0
--- /dev/null
+++ b/res/layout/suw_preview_seek_bar_view_pager.xml
@@ -0,0 +1,42 @@
+<?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.
+-->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="0dp"
+ android:layout_weight="1"
+ android:orientation="vertical"
+ android:paddingStart="@dimen/preview_pager_padding"
+ android:paddingEnd="@dimen/preview_pager_padding"
+ android:background="@drawable/preview_seek_bar_outline" >
+
+ <androidx.viewpager.widget.ViewPager
+ android:id="@+id/preview_pager"
+ android:layout_width="match_parent"
+ android:layout_height="200dp"
+ android:layout_weight="1"
+ android:background="?android:attr/colorBackground"
+ android:contentDescription="@string/preview_pager_content_description" />
+
+ <TextView
+ android:layout_width="match_parent"
+ android:layout_height="36dp"
+ android:paddingStart="32dp"
+ android:gravity="start|center"
+ android:text="@string/screen_zoom_preview_title"
+ android:textAppearance="@android:style/TextAppearance.DeviceDefault.Widget.ActionBar.Title"
+ android:importantForAccessibility="no" />
+</LinearLayout>
+
diff --git a/res/layout/suw_screen_zoom_fragment.xml b/res/layout/suw_screen_zoom_fragment.xml
new file mode 100644
index 0000000..0747381
--- /dev/null
+++ b/res/layout/suw_screen_zoom_fragment.xml
@@ -0,0 +1,85 @@
+<?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.
+-->
+<androidx.core.widget.NestedScrollView
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:fillViewport="true">
+
+ <LinearLayout
+ android:orientation="vertical"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content">
+
+ <include layout="@layout/suw_preview_seek_bar_view_pager"/>
+
+ <LinearLayout
+ android:orientation="vertical"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:paddingStart="?android:attr/listPreferredItemPaddingStart"
+ android:paddingEnd="?android:attr/listPreferredItemPaddingEnd">
+
+ <com.android.settings.widget.DotsPageIndicator
+ android:id="@+id/page_indicator"
+ style="@style/PreviewPagerPageIndicator"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center_horizontal"
+ android:padding="3dp"/>
+
+ <TextView
+ android:id="@+id/current_label"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center_horizontal"
+ android:padding="6dp"
+ android:textAppearance="@android:style/TextAppearance.DeviceDefault.Widget.TextView"
+ android:elevation="2dp"/>
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:gravity="center_vertical">
+
+ <ImageView
+ android:id="@+id/smaller"
+ android:src="@drawable/ic_remove_24dp"
+ android:contentDescription="@string/screen_zoom_make_smaller_desc"
+ style="@style/screen_size_imageview_style"/>
+
+ <com.android.settings.widget.LabeledSeekBar
+ android:id="@+id/seek_bar"
+ android:layout_width="0dp"
+ android:layout_height="48dp"
+ android:layout_weight="1"
+ style="@android:style/Widget.Material.SeekBar.Discrete"/>
+
+ <ImageView
+ android:id="@+id/larger"
+ android:src="@drawable/ic_add_24dp"
+ android:contentDescription="@string/screen_zoom_make_larger_desc"
+ style="@style/screen_size_imageview_style"/>
+ </LinearLayout>
+
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@string/screen_zoom_summary"
+ android:textAppearance="@*android:style/TextAppearance.DeviceDefault.Subhead"/>
+ </LinearLayout>
+ </LinearLayout>
+</androidx.core.widget.NestedScrollView>
diff --git a/res/values-sw300dp-land-v31/dimens.xml b/res/values-sw300dp-land-v31/dimens.xml
new file mode 100644
index 0000000..fa7d2bf
--- /dev/null
+++ b/res/values-sw300dp-land-v31/dimens.xml
@@ -0,0 +1,19 @@
+<?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>
+ <!-- Top margin for preview view pager -->
+ <dimen name="preview_size_top_margin">0dp</dimen>
+</resources>
\ No newline at end of file
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index 2cd944a..e1d7584 100755
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -434,6 +434,9 @@
<!-- Choose SIM Activity dimens -->
<dimen name="subtitle_bottom_padding">24dp</dimen>
+ <!-- Top margin for preview view pager -->
+ <dimen name="preview_size_top_margin">-12dp</dimen>
+
<!-- Battery usage chart view component -->
<dimen name="chartview_text_padding">6dp</dimen>
<dimen name="chartview_divider_width">1dp</dimen>
diff --git a/res/values/integers.xml b/res/values/integers.xml
index 3d73f64..5354388 100644
--- a/res/values/integers.xml
+++ b/res/values/integers.xml
@@ -21,4 +21,9 @@
<integer name="job_anomaly_detection">102</integer>
<integer name="device_index_update">103</integer>
<integer name="sim_notification_send">104</integer>
+
+ <!-- Define the font/display size fragment id in the
+ accessibility_settings_for_setup_wizard.xml. -->
+ <integer name="suw_font_size_fragment_no">0</integer>
+ <integer name="suw_display_size_fragment_no">1</integer>
</resources>
diff --git a/res/values/styles.xml b/res/values/styles.xml
index 8b0b7a2..5b3b1c8 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -237,6 +237,16 @@
<item name="android:textAppearance">@android:style/TextAppearance.DeviceDefault.Small</item>
</style>
+ <style name="screen_size_imageview_style">
+ <item name="android:layout_width">48dp</item>
+ <item name="android:layout_height">48dp</item>
+ <item name="android:background">?android:attr/selectableItemBackgroundBorderless</item>
+ <item name="android:tint">?android:attr/textColorPrimary</item>
+ <item name="android:tintMode">src_in</item>
+ <item name="android:scaleType">center</item>
+ <item name="android:focusable">true</item>
+ </style>
+
<style name="TextAppearance" parent="android:TextAppearance.DeviceDefault"/>
<style name="TextAppearance.info_label">
diff --git a/res/xml/accessibility_settings_for_setup_wizard.xml b/res/xml/accessibility_settings_for_setup_wizard.xml
index a3f56b5..d1b4f4a 100644
--- a/res/xml/accessibility_settings_for_setup_wizard.xml
+++ b/res/xml/accessibility_settings_for_setup_wizard.xml
@@ -21,18 +21,28 @@
android:title="@string/vision_settings_title">
<Preference
- android:fragment="com.android.settings.display.FontSizePreferenceFragmentForSetupWizard"
android:key="font_size_preference"
android:icon="@drawable/ic_font_size"
android:summary="@string/short_summary_font_size"
- android:title="@string/title_font_size"/>
+ android:title="@string/title_font_size">
+ <intent
+ android:targetPackage="com.android.settings"
+ android:targetClass="com.android.settings.accessibility.AccessibilityScreenSizeForSetupWizardActivity">
+ <extra android:name="vision_fragment_no" android:value="@integer/suw_font_size_fragment_no"/>
+ </intent>
+ </Preference>
<com.android.settings.display.ScreenZoomPreference
- android:fragment="com.android.settings.display.ScreenZoomPreferenceFragmentForSetupWizard"
android:key="force_density_preference"
android:icon="@drawable/ic_screen_zoom"
android:summary="@string/screen_zoom_short_summary"
- android:title="@string/screen_zoom_title"/>
+ android:title="@string/screen_zoom_title">
+ <intent
+ android:targetPackage="com.android.settings"
+ android:targetClass="com.android.settings.accessibility.AccessibilityScreenSizeForSetupWizardActivity">
+ <extra android:name="vision_fragment_no" android:value="@integer/suw_display_size_fragment_no"/>
+ </intent>
+ </com.android.settings.display.ScreenZoomPreference>
<Preference
android:fragment="com.android.settings.accessibility.MagnificationPreferenceFragment"
diff --git a/src/com/android/settings/accessibility/AccessibilityScreenSizeForSetupWizardActivity.java b/src/com/android/settings/accessibility/AccessibilityScreenSizeForSetupWizardActivity.java
new file mode 100644
index 0000000..8a60e5f
--- /dev/null
+++ b/src/com/android/settings/accessibility/AccessibilityScreenSizeForSetupWizardActivity.java
@@ -0,0 +1,127 @@
+/*
+ * 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.
+ */
+package com.android.settings.accessibility;
+
+import android.app.settings.SettingsEnums;
+import android.os.Bundle;
+import android.util.Log;
+import android.view.View;
+import android.widget.ScrollView;
+import android.widget.TextView;
+
+import androidx.annotation.VisibleForTesting;
+import androidx.preference.PreferenceFragmentCompat;
+
+import com.android.settings.R;
+import com.android.settings.core.InstrumentedActivity;
+import com.android.settings.display.FontSizePreferenceFragmentForSetupWizard;
+import com.android.settings.display.ScreenZoomPreferenceFragmentForSetupWizard;
+
+import com.google.android.setupcompat.template.FooterBarMixin;
+import com.google.android.setupcompat.template.FooterButton;
+import com.google.android.setupdesign.GlifLayout;
+import com.google.android.setupdesign.util.ThemeHelper;
+
+/** Settings font/display size activity for SUW. */
+public class AccessibilityScreenSizeForSetupWizardActivity extends InstrumentedActivity {
+ private static final String TAG = "ScreenSizeForSetup";
+
+ // A parameter decides which fragment ({@link FontSizePreferenceFragmentForSetupWizard} or
+ // {@link ScreenZoomPreferenceFragmentForSetupWizard}) will be visioned.
+ static final String VISION_FRAGMENT_NO = "vision_fragment_no";
+
+ private int mFragmentNo;
+ private int mFontSizeFragmentNo;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ mFontSizeFragmentNo = getResources().getInteger(R.integer.suw_font_size_fragment_no);
+ final int appliedTheme = ThemeHelper.trySetDynamicColor(this)
+ ? R.style.SudDynamicColorThemeGlifV3_DayNight : R.style.SudThemeGlifV3_DayNight;
+ setTheme(appliedTheme);
+ setContentView(R.layout.accessibility_screen_size_setup_wizard);
+ mFragmentNo = getIntent().getExtras().getInt(VISION_FRAGMENT_NO);
+ Log.d(TAG, "onCreate: fragment no: " + mFragmentNo);
+ generateHeader(mFragmentNo);
+ scrollToBottom();
+ initFooterButton();
+ if (savedInstanceState == null) {
+ final PreferenceFragmentCompat fragment =
+ (mFragmentNo == mFontSizeFragmentNo)
+ ? new FontSizePreferenceFragmentForSetupWizard()
+ : new ScreenZoomPreferenceFragmentForSetupWizard();
+ getSupportFragmentManager()
+ .beginTransaction()
+ .replace(R.id.content_frame, fragment)
+ .commit();
+ }
+ }
+
+ @Override
+ public int getMetricsCategory() {
+ return mFragmentNo == mFontSizeFragmentNo ? SettingsEnums.SUW_ACCESSIBILITY_FONT_SIZE
+ : SettingsEnums.SUW_ACCESSIBILITY_DISPLAY_SIZE;
+ }
+
+ @VisibleForTesting
+ void generateHeader(int fragmentNo) {
+ ((TextView) findViewById(R.id.suc_layout_title)).setText(
+ fragmentNo == mFontSizeFragmentNo ? R.string.title_font_size
+ : R.string.screen_zoom_title);
+ ((TextView) findViewById(R.id.sud_layout_subtitle)).setText(
+ fragmentNo == mFontSizeFragmentNo ? R.string.short_summary_font_size
+ : R.string.screen_zoom_short_summary);
+ }
+
+ @VisibleForTesting
+ void initFooterButton() {
+ final GlifLayout layout = findViewById(R.id.setup_wizard_layout);
+ final FooterBarMixin mixin = layout.getMixin(FooterBarMixin.class);
+ final View.OnClickListener nextButtonListener =
+ v -> {
+ onBackPressed();
+ };
+ final FooterButton primaryButton =
+ new FooterButton.Builder(this)
+ .setText(R.string.done)
+ .setListener(nextButtonListener)
+ .setButtonType(FooterButton.ButtonType.NEXT)
+ .setTheme(R.style.SudGlifButton_Primary)
+ .build();
+ mixin.setPrimaryButton(primaryButton);
+ }
+
+ /**
+ * Scrolls to bottom while {@link ScrollView} layout changed.
+ */
+ private void scrollToBottom() {
+ final GlifLayout layout = findViewById(R.id.setup_wizard_layout);
+ final ScrollView scrollView = layout.getScrollView();
+ scrollView.getViewTreeObserver().addOnGlobalLayoutListener(() -> {
+ final int scrollViewHeight = scrollView.getHeight();
+ if (scrollViewHeight > 0) {
+ scrollView.post(() -> {
+ // Here is no need to show the scrolling animation. So disabled first and
+ // then enabled it after scrolling finished.
+ scrollView.setSmoothScrollingEnabled(false);
+ scrollView.fullScroll(View.FOCUS_DOWN);
+ scrollView.setSmoothScrollingEnabled(true);
+ });
+ }
+ });
+ }
+}
diff --git a/src/com/android/settings/accessibility/AccessibilitySettingsForSetupWizardActivity.java b/src/com/android/settings/accessibility/AccessibilitySettingsForSetupWizardActivity.java
index b65b349..0625fd2 100644
--- a/src/com/android/settings/accessibility/AccessibilitySettingsForSetupWizardActivity.java
+++ b/src/com/android/settings/accessibility/AccessibilitySettingsForSetupWizardActivity.java
@@ -16,7 +16,10 @@
package com.android.settings.accessibility;
+import static com.android.settings.accessibility.AccessibilityScreenSizeForSetupWizardActivity.VISION_FRAGMENT_NO;
+
import android.content.ComponentName;
+import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
@@ -30,7 +33,6 @@
import com.android.settings.SettingsActivity;
import com.android.settings.SetupWizardUtils;
import com.android.settings.core.SubSettingLauncher;
-import com.android.settings.display.FontSizePreferenceFragmentForSetupWizard;
import com.android.settings.search.actionbar.SearchMenuController;
import com.android.settings.support.actionbar.HelpResourceProvider;
import com.android.settingslib.core.instrumentation.Instrumentable;
@@ -123,19 +125,12 @@
&& new ComponentName(getPackageName(),
CLASS_NAME_FONT_SIZE_SETTINGS_FOR_SUW).equals(
getIntent().getComponent())) {
- final Bundle args = new Bundle();
- args.putInt(HelpResourceProvider.HELP_URI_RESOURCE_KEY, 0);
- args.putBoolean(SearchMenuController.NEED_SEARCH_ICON_IN_ACTION_BAR, false);
- final SubSettingLauncher subSettingLauncher = new SubSettingLauncher(this)
- .setDestination(FontSizePreferenceFragmentForSetupWizard.class.getName())
- .setArguments(args)
- .setSourceMetricsCategory(Instrumentable.METRICS_CATEGORY_UNKNOWN)
- .setExtras(SetupWizardUtils.copyLifecycleExtra(getIntent().getExtras(),
- new Bundle()))
- .setTransitionType(SettingsTransitionHelper.TransitionType.TRANSITION_FADE);
-
+ final Intent intent = new Intent(this,
+ AccessibilityScreenSizeForSetupWizardActivity.class);
+ intent.putExtra(VISION_FRAGMENT_NO,
+ getResources().getInteger(R.integer.suw_font_size_fragment_no));
+ startActivity(intent);
Log.d(LOG_TAG, "Launch font size settings");
- subSettingLauncher.launch();
finish();
}
}
diff --git a/src/com/android/settings/display/FontSizePreferenceFragmentForSetupWizard.java b/src/com/android/settings/display/FontSizePreferenceFragmentForSetupWizard.java
index 04b6dc3..627f107 100644
--- a/src/com/android/settings/display/FontSizePreferenceFragmentForSetupWizard.java
+++ b/src/com/android/settings/display/FontSizePreferenceFragmentForSetupWizard.java
@@ -18,10 +18,17 @@
import android.app.settings.SettingsEnums;
+import com.android.settings.R;
+
public class FontSizePreferenceFragmentForSetupWizard
extends ToggleFontSizePreferenceFragment {
@Override
+ protected int getActivityLayoutResId() {
+ return R.layout.suw_font_size_fragment;
+ }
+
+ @Override
public int getMetricsCategory() {
return SettingsEnums.SUW_ACCESSIBILITY_FONT_SIZE;
}
diff --git a/src/com/android/settings/display/PreviewPagerAdapter.java b/src/com/android/settings/display/PreviewPagerAdapter.java
index 018be32..a424b1d 100644
--- a/src/com/android/settings/display/PreviewPagerAdapter.java
+++ b/src/com/android/settings/display/PreviewPagerAdapter.java
@@ -109,6 +109,10 @@
return (view == object);
}
+ FrameLayout[] getPreviewFrames() {
+ return mPreviewFrames;
+ }
+
boolean isAnimating() {
return mAnimationCounter > 0;
}
diff --git a/src/com/android/settings/display/PreviewSeekBarPreferenceFragment.java b/src/com/android/settings/display/PreviewSeekBarPreferenceFragment.java
index abd14d2..c6d5b8b 100644
--- a/src/com/android/settings/display/PreviewSeekBarPreferenceFragment.java
+++ b/src/com/android/settings/display/PreviewSeekBarPreferenceFragment.java
@@ -264,6 +264,12 @@
@Override
public void onPageSelected(int position) {
mPreviewPager.sendAccessibilityEvent(AccessibilityEvent.TYPE_ANNOUNCEMENT);
+ // To avoid displaying previous page on the left side in SUW landscape mode for
+ // large size.
+ if (position > 0) {
+ mPreviewPagerAdapter.getPreviewFrames()[position - 1].setVisibility(View.INVISIBLE);
+ }
+ mPreviewPagerAdapter.getPreviewFrames()[position].setVisibility(View.VISIBLE);
}
};
diff --git a/src/com/android/settings/display/ScreenZoomPreferenceFragmentForSetupWizard.java b/src/com/android/settings/display/ScreenZoomPreferenceFragmentForSetupWizard.java
index cfa7b5d..7185c63 100644
--- a/src/com/android/settings/display/ScreenZoomPreferenceFragmentForSetupWizard.java
+++ b/src/com/android/settings/display/ScreenZoomPreferenceFragmentForSetupWizard.java
@@ -18,9 +18,16 @@
import android.app.settings.SettingsEnums;
+import com.android.settings.R;
+
public class ScreenZoomPreferenceFragmentForSetupWizard extends ScreenZoomSettings {
@Override
+ protected int getActivityLayoutResId() {
+ return R.layout.suw_screen_zoom_fragment;
+ }
+
+ @Override
public int getMetricsCategory() {
return SettingsEnums.SUW_ACCESSIBILITY_DISPLAY_SIZE;
}
diff --git a/tests/robotests/src/com/android/settings/accessibility/AccessibilityScreenSizeForSetupWizardActivityTest.java b/tests/robotests/src/com/android/settings/accessibility/AccessibilityScreenSizeForSetupWizardActivityTest.java
new file mode 100644
index 0000000..05e5b32
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/accessibility/AccessibilityScreenSizeForSetupWizardActivityTest.java
@@ -0,0 +1,84 @@
+/*
+ * 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.
+ */
+
+package com.android.settings.accessibility;
+
+import static com.android.settings.accessibility.AccessibilityScreenSizeForSetupWizardActivity.VISION_FRAGMENT_NO;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.content.Context;
+import android.content.Intent;
+
+import androidx.test.core.app.ApplicationProvider;
+
+import com.android.settings.R;
+
+import com.google.android.setupcompat.template.FooterBarMixin;
+import com.google.android.setupdesign.GlifLayout;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.Robolectric;
+import org.robolectric.RobolectricTestRunner;
+
+/** Tests for {@link AccessibilityScreenSizeForSetupWizardActivity} */
+@RunWith(RobolectricTestRunner.class)
+public class AccessibilityScreenSizeForSetupWizardActivityTest {
+ private static final int DISPLAY_SIZE_FRAGMENT_NO = 1;
+
+ private Context mContext = ApplicationProvider.getApplicationContext();
+ private AccessibilityScreenSizeForSetupWizardActivity mActivity;
+
+ @Before
+ public void setup() {
+ final Intent intent = new Intent();
+ intent.putExtra(VISION_FRAGMENT_NO,
+ mContext.getResources().getInteger(R.integer.suw_font_size_fragment_no));
+ mActivity = Robolectric.buildActivity(AccessibilityScreenSizeForSetupWizardActivity.class,
+ intent).create().get();
+ }
+
+ @Test
+ public void generateHeader_setPageNoAsFontSize_returnFontSizeTitle() {
+ mActivity.generateHeader(
+ mActivity.getResources().getInteger(R.integer.suw_font_size_fragment_no));
+
+ final GlifLayout layout = mActivity.findViewById(R.id.setup_wizard_layout);
+
+ assertThat(layout.getHeaderText()).isEqualTo(mContext.getText(R.string.title_font_size));
+ }
+
+ @Test
+ public void generateHeader_setPageNoAsDisplaySize_returnDisplaySizeTitle() {
+ mActivity.generateHeader(DISPLAY_SIZE_FRAGMENT_NO);
+
+ final GlifLayout layout = mActivity.findViewById(R.id.setup_wizard_layout);
+
+ assertThat(layout.getHeaderText()).isEqualTo(mContext.getText(R.string.screen_zoom_title));
+ }
+
+ @Test
+ public void initFooterButton_generateDoneButton() {
+ mActivity.initFooterButton();
+
+ final GlifLayout layout = mActivity.findViewById(R.id.setup_wizard_layout);
+ final FooterBarMixin mixin = layout.getMixin(FooterBarMixin.class);
+
+ assertThat(mixin.getPrimaryButton().getText()).isEqualTo(mContext.getText(R.string.done));
+ }
+}
diff --git a/tests/robotests/src/com/android/settings/accessibility/AccessibilitySettingsForSetupWizardActivityTest.java b/tests/robotests/src/com/android/settings/accessibility/AccessibilitySettingsForSetupWizardActivityTest.java
index c3a630b..4d9668a 100644
--- a/tests/robotests/src/com/android/settings/accessibility/AccessibilitySettingsForSetupWizardActivityTest.java
+++ b/tests/robotests/src/com/android/settings/accessibility/AccessibilitySettingsForSetupWizardActivityTest.java
@@ -16,6 +16,7 @@
package com.android.settings.accessibility;
+import static com.android.settings.accessibility.AccessibilityScreenSizeForSetupWizardActivity.VISION_FRAGMENT_NO;
import static com.android.settings.accessibility.AccessibilitySettingsForSetupWizardActivity.CLASS_NAME_FONT_SIZE_SETTINGS_FOR_SUW;
import static com.google.common.truth.Truth.assertThat;
@@ -26,8 +27,6 @@
import androidx.test.filters.SmallTest;
import com.android.settings.R;
-import com.android.settings.SettingsActivity;
-import com.android.settings.display.FontSizePreferenceFragmentForSetupWizard;
import com.google.android.setupcompat.util.WizardManagerHelper;
@@ -42,45 +41,47 @@
@SmallTest
public class AccessibilitySettingsForSetupWizardActivityTest {
- @Test
- public void createSetupAccessibilityActivity_shouldBeSUWTheme() {
- final Intent intent = new Intent();
- AccessibilitySettingsForSetupWizardActivity activity =
- Robolectric.buildActivity(AccessibilitySettingsForSetupWizardActivity.class, intent).get();
+ @Test
+ public void createSetupAccessibilityActivity_shouldBeSUWTheme() {
+ final Intent intent = new Intent();
+ AccessibilitySettingsForSetupWizardActivity activity =
+ Robolectric.buildActivity(AccessibilitySettingsForSetupWizardActivity.class,
+ intent).get();
- assertThat(activity.getThemeResId()).isEqualTo(R.style.GlifV3Theme_Light);
- }
+ assertThat(activity.getThemeResId()).isEqualTo(R.style.GlifV3Theme_Light);
+ }
- @Test
- public void onCreate_hasFontSizeComponent_shouldGoToFontSizePreferenceDirectly() {
- AccessibilitySettingsForSetupWizardActivity activity =
- Robolectric.buildActivity(AccessibilitySettingsForSetupWizardActivity.class,
- new Intent(Intent.ACTION_MAIN).setComponent(new ComponentName(
- RuntimeEnvironment.application, CLASS_NAME_FONT_SIZE_SETTINGS_FOR_SUW)).
- putExtra(WizardManagerHelper.EXTRA_IS_FIRST_RUN, true).
- putExtra(WizardManagerHelper.EXTRA_IS_SETUP_FLOW, true)).get();
+ @Test
+ public void onCreate_hasFontSizeComponent_shouldGoToFontSizePreferenceDirectly() {
+ AccessibilitySettingsForSetupWizardActivity activity =
+ Robolectric.buildActivity(AccessibilitySettingsForSetupWizardActivity.class,
+ new Intent(Intent.ACTION_MAIN).setComponent(new ComponentName(
+ RuntimeEnvironment.application,
+ CLASS_NAME_FONT_SIZE_SETTINGS_FOR_SUW))
+ .putExtra(WizardManagerHelper.EXTRA_IS_FIRST_RUN, true)
+ .putExtra(WizardManagerHelper.EXTRA_IS_SETUP_FLOW, true)).get();
- activity.tryLaunchFontSizeSettings();
+ activity.tryLaunchFontSizeSettings();
- final Intent launchIntent = Shadows.shadowOf(activity).getNextStartedActivity();
- assertThat(launchIntent).isNotNull();
- assertThat(launchIntent.getStringExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT)).isEqualTo(
- FontSizePreferenceFragmentForSetupWizard.class.getName());
- assertThat(activity.isFinishing()).isTrue();
- }
+ final Intent launchIntent = Shadows.shadowOf(activity).getNextStartedActivity();
+ assertThat(launchIntent).isNotNull();
+ assertThat(launchIntent.getIntExtra(VISION_FRAGMENT_NO, -1)).isEqualTo(
+ activity.getResources().getInteger(R.integer.suw_font_size_fragment_no));
+ assertThat(activity.isFinishing()).isTrue();
+ }
- @Test
- public void onCreate_noFontSizeComponent_shouldNotFinishCurrentActivity() {
- AccessibilitySettingsForSetupWizardActivity activity =
- Robolectric.buildActivity(AccessibilitySettingsForSetupWizardActivity.class,
- new Intent(Intent.ACTION_MAIN).
- putExtra(WizardManagerHelper.EXTRA_IS_FIRST_RUN, true).
- putExtra(WizardManagerHelper.EXTRA_IS_SETUP_FLOW, true)).get();
+ @Test
+ public void onCreate_noFontSizeComponent_shouldNotFinishCurrentActivity() {
+ AccessibilitySettingsForSetupWizardActivity activity =
+ Robolectric.buildActivity(AccessibilitySettingsForSetupWizardActivity.class,
+ new Intent(Intent.ACTION_MAIN)
+ .putExtra(WizardManagerHelper.EXTRA_IS_FIRST_RUN, true)
+ .putExtra(WizardManagerHelper.EXTRA_IS_SETUP_FLOW, true)).get();
- activity.tryLaunchFontSizeSettings();
+ activity.tryLaunchFontSizeSettings();
- final Intent launchIntent = Shadows.shadowOf(activity).getNextStartedActivity();
- assertThat(launchIntent).isNull();
- assertThat(activity.isFinishing()).isFalse();
- }
+ final Intent launchIntent = Shadows.shadowOf(activity).getNextStartedActivity();
+ assertThat(launchIntent).isNull();
+ assertThat(activity.isFinishing()).isFalse();
+ }
}