Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 71aca3b7 authored by menghanli's avatar menghanli
Browse files

Apply fade transition for font size and display size Suw page

- Create font size & screen size controler to simply xml
- Add onPuase animation

Bug: 194447311
Test: atest AccessibilityScreenSizeForSetupWizardActivityTest
Test: atest FontSizePreferenceControllerTest
Test: atest ScreenSizePreferenceControllerTest
Change-Id: I91f3fd4c22aba4f8cd46f6e82e50987544942245
parent 69c9e424
Loading
Loading
Loading
Loading
+0 −5
Original line number Diff line number Diff line
@@ -21,9 +21,4 @@
    <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>
+4 −14
Original line number Diff line number Diff line
@@ -24,25 +24,15 @@
        android:key="font_size_preference"
        android:icon="@drawable/ic_font_size"
        android:summary="@string/short_summary_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>
        android:title="@string/title_font_size"
        settings:controller="com.android.settings.accessibility.FontSizePreferenceController" />

    <com.android.settings.display.ScreenZoomPreference
        android:key="force_density_preference"
        android:icon="@drawable/ic_screen_zoom"
        android:summary="@string/screen_zoom_short_summary"
        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>
        android:title="@string/screen_zoom_title"
        settings:controller="com.android.settings.accessibility.ScreenSizePreferenceController" />

    <Preference
        android:fragment="com.android.settings.accessibility.MagnificationPreferenceFragment"
+48 −19
Original line number Diff line number Diff line
@@ -15,13 +15,16 @@
 */
package com.android.settings.accessibility;

import static com.android.settings.core.SettingsBaseActivity.EXTRA_PAGE_TRANSITION_TYPE;

import android.app.settings.SettingsEnums;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ScrollView;
import android.widget.TextView;

import androidx.annotation.IntDef;
import androidx.annotation.VisibleForTesting;
import androidx.preference.PreferenceFragmentCompat;

@@ -29,12 +32,16 @@ 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.android.settingslib.transition.SettingsTransitionHelper.TransitionType;

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;

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;

/** Settings font/display size activity for SUW. */
public class AccessibilityScreenSizeForSetupWizardActivity extends InstrumentedActivity {
    private static final String TAG = "ScreenSizeForSetup";
@@ -42,26 +49,32 @@ public class AccessibilityScreenSizeForSetupWizardActivity extends InstrumentedA
    // 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;
    /**
     * Flags indicating the type of the fragment.
     */
    @IntDef({
        FragmentType.FONT_SIZE,
        FragmentType.SCREEN_SIZE,
    })
    @Retention(RetentionPolicy.SOURCE)
    public @interface FragmentType {
        int FONT_SIZE = 1;
        int SCREEN_SIZE = 2;
    }

    @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);
        generateHeader();
        scrollToBottom();
        initFooterButton();
        if (savedInstanceState == null) {
            final PreferenceFragmentCompat fragment =
                    (mFragmentNo == mFontSizeFragmentNo)
                    getFragmentType(getIntent()) == FragmentType.FONT_SIZE
                            ? new FontSizePreferenceFragmentForSetupWizard()
                            : new ScreenZoomPreferenceFragmentForSetupWizard();
            getSupportFragmentManager()
@@ -71,30 +84,38 @@ public class AccessibilityScreenSizeForSetupWizardActivity extends InstrumentedA
        }
    }

    @Override
    protected void onPause() {
        // For accessibility activities launched from setup wizard.
        if (getTransitionType(getIntent()) == TransitionType.TRANSITION_FADE) {
            overridePendingTransition(R.anim.sud_stay, android.R.anim.fade_out);
        }
        super.onPause();
    }

    @Override
    public int getMetricsCategory() {
        return mFragmentNo == mFontSizeFragmentNo ? SettingsEnums.SUW_ACCESSIBILITY_FONT_SIZE
        return getFragmentType(getIntent()) == FragmentType.FONT_SIZE
                ? SettingsEnums.SUW_ACCESSIBILITY_FONT_SIZE
                : SettingsEnums.SUW_ACCESSIBILITY_DISPLAY_SIZE;
    }

    @VisibleForTesting
    void generateHeader(int fragmentNo) {
    void generateHeader() {
        ((TextView) findViewById(R.id.suc_layout_title)).setText(
                fragmentNo == mFontSizeFragmentNo ? R.string.title_font_size
                getFragmentType(getIntent()) == FragmentType.FONT_SIZE
                        ? 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
                getFragmentType(getIntent()) == FragmentType.FONT_SIZE
                        ? R.string.short_summary_font_size
                        : R.string.screen_zoom_short_summary);
    }

    @VisibleForTesting
    void initFooterButton() {
    private 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 View.OnClickListener nextButtonListener = v -> onBackPressed();
        final FooterButton primaryButton =
                new FooterButton.Builder(this)
                        .setText(R.string.done)
@@ -124,4 +145,12 @@ public class AccessibilityScreenSizeForSetupWizardActivity extends InstrumentedA
            }
        });
    }

    private int getTransitionType(Intent intent) {
        return intent.getIntExtra(EXTRA_PAGE_TRANSITION_TYPE, TransitionType.TRANSITION_NONE);
    }

    private int getFragmentType(Intent intent) {
        return intent.getIntExtra(VISION_FRAGMENT_NO, FragmentType.FONT_SIZE);
    }
}
+13 −4
Original line number Diff line number Diff line
@@ -38,7 +38,7 @@ import androidx.preference.Preference;
import androidx.recyclerview.widget.RecyclerView;

import com.android.settings.R;
import com.android.settings.SettingsPreferenceFragment;
import com.android.settings.dashboard.DashboardFragment;
import com.android.settingslib.RestrictedPreference;

import com.google.android.setupdesign.GlifPreferenceLayout;
@@ -48,8 +48,9 @@ import java.util.List;
/**
 * Activity with the accessibility settings specific to Setup Wizard.
 */
public class AccessibilitySettingsForSetupWizard extends SettingsPreferenceFragment
public class AccessibilitySettingsForSetupWizard extends DashboardFragment
        implements Preference.OnPreferenceChangeListener {
    private static final String TAG = "AccessibilitySettingsForSetupWizard";

    // Preferences.
    private static final String DISPLAY_MAGNIFICATION_PREFERENCE =
@@ -97,8 +98,6 @@ public class AccessibilitySettingsForSetupWizard extends SettingsPreferenceFragm
    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        addPreferencesFromResource(R.xml.accessibility_settings_for_setup_wizard);

        mDisplayMagnificationPreference = findPreference(DISPLAY_MAGNIFICATION_PREFERENCE);
        mScreenReaderPreference = findPreference(SCREEN_READER_PREFERENCE);
        mSelectToSpeakPreference = findPreference(SELECT_TO_SPEAK_PREFERENCE);
@@ -137,6 +136,16 @@ public class AccessibilitySettingsForSetupWizard extends SettingsPreferenceFragm
        return super.onPreferenceTreeClick(preference);
    }

    @Override
    protected int getPreferenceScreenResId() {
        return R.xml.accessibility_settings_for_setup_wizard;
    }

    @Override
    protected String getLogTag() {
        return TAG;
    }

    /**
     * Returns accessibility service info by given package name and service name.
     *
+4 −2
Original line number Diff line number Diff line
@@ -32,11 +32,13 @@ import androidx.preference.PreferenceFragmentCompat;
import com.android.settings.R;
import com.android.settings.SettingsActivity;
import com.android.settings.SetupWizardUtils;
import com.android.settings.accessibility.AccessibilityScreenSizeForSetupWizardActivity.FragmentType;
import com.android.settings.core.SubSettingLauncher;
import com.android.settings.search.actionbar.SearchMenuController;
import com.android.settings.support.actionbar.HelpResourceProvider;
import com.android.settingslib.core.instrumentation.Instrumentable;
import com.android.settingslib.transition.SettingsTransitionHelper;
import com.android.settingslib.transition.SettingsTransitionHelper.TransitionType;

import com.google.android.setupcompat.util.WizardManagerHelper;
import com.google.android.setupdesign.util.ThemeHelper;
@@ -127,8 +129,8 @@ public class AccessibilitySettingsForSetupWizardActivity extends SettingsActivit
                getIntent().getComponent())) {
            final Intent intent = new Intent(this,
                    AccessibilityScreenSizeForSetupWizardActivity.class);
            intent.putExtra(VISION_FRAGMENT_NO,
                    getResources().getInteger(R.integer.suw_font_size_fragment_no));
            intent.putExtra(VISION_FRAGMENT_NO, FragmentType.FONT_SIZE);
            intent.putExtra(EXTRA_PAGE_TRANSITION_TYPE, TransitionType.TRANSITION_FADE);
            startActivity(intent);
            Log.d(LOG_TAG, "Launch font size settings");
            finish();
Loading