Update the BC style for the vision settings in SuW.

Bug: 179234608
Test: manual test
Change-Id: I152eaab8ad77c7a1fccbc82d7ed8cef406fc1821
This commit is contained in:
Peter_Liang
2021-04-27 13:21:16 +08:00
parent 921c677320
commit 50efd602b9
3 changed files with 74 additions and 30 deletions

View File

@@ -0,0 +1,26 @@
<?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.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:pathData="M12,7c-2.48,0 -4.5,2.02 -4.5,4.5S9.52,16 12,16s4.5,-2.02 4.5,-4.5S14.48,7 12,7zM12,14.2c-1.49,0 -2.7,-1.21 -2.7,-2.7 0,-1.49 1.21,-2.7 2.7,-2.7s2.7,1.21 2.7,2.7c0,1.49 -1.21,2.7 -2.7,2.7zM12,4C7,4 2.73,7.11 1,11.5 2.73,15.89 7,19 12,19s9.27,-3.11 11,-7.5C21.27,7.11 17,4 12,4zM12,17c-3.79,0 -7.17,-2.13 -8.82,-5.5C4.83,8.13 8.21,6 12,6s7.17,2.13 8.82,5.5C19.17,14.87 15.79,17 12,17z"
android:fillColor="?android:attr/colorPrimary"/>
</vector>

View File

@@ -14,46 +14,44 @@
limitations under the License. limitations under the License.
--> -->
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" <PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:settings="http://schemas.android.com/apk/res-auto" xmlns:settings="http://schemas.android.com/apk/res-auto"
android:persistent="true" android:persistent="true"
android:title="@string/vision_settings_title"> android:title="@string/vision_settings_title">
<com.android.settings.accessibility.DividerAllowedBelowPreference
android:key="vision_settings_summary"
android:layout="@layout/preference_multiline_title"
android:selectable="false"
android:title="@string/vision_settings_description" />
<Preference
settings:controller="com.android.settings.accessibility.MagnificationPreferenceController"
android:fragment="com.android.settings.accessibility.MagnificationPreferenceFragment"
android:key="screen_magnification_preference"
android:summary="@string/accessibility_preference_magnification_summary"
android:title="@string/accessibility_screen_magnification_title" />
<Preference <Preference
android:fragment="com.android.settings.display.FontSizePreferenceFragmentForSetupWizard" android:fragment="com.android.settings.display.FontSizePreferenceFragmentForSetupWizard"
android:key="font_size_preference" android:key="font_size_preference"
android:icon="@drawable/ic_font_size"
android:summary="@string/short_summary_font_size" android:summary="@string/short_summary_font_size"
android:title="@string/title_font_size" /> android:title="@string/title_font_size"/>
<com.android.settings.display.ScreenZoomPreference <com.android.settings.display.ScreenZoomPreference
android:fragment="com.android.settings.display.ScreenZoomPreferenceFragmentForSetupWizard" android:fragment="com.android.settings.display.ScreenZoomPreferenceFragmentForSetupWizard"
android:key="force_density_preference" android:key="force_density_preference"
android:icon="@drawable/ic_screen_zoom"
android:summary="@string/screen_zoom_short_summary" android:summary="@string/screen_zoom_short_summary"
android:title="@string/screen_zoom_title" /> android:title="@string/screen_zoom_title"/>
<Preference <Preference
android:fragment="com.android.settings.accessibility.MagnificationPreferenceFragment"
android:key="screen_magnification_preference"
android:icon="@drawable/ic_accessibility_magnification"
android:summary="@string/accessibility_preference_magnification_summary"
android:title="@string/accessibility_screen_magnification_title"
settings:controller="com.android.settings.accessibility.MagnificationPreferenceController"/>
<com.android.settingslib.RestrictedPreference
android:fragment="com.android.settings.accessibility.ToggleSelectToSpeakPreferenceFragmentForSetupWizard" android:fragment="com.android.settings.accessibility.ToggleSelectToSpeakPreferenceFragmentForSetupWizard"
android:key="select_to_speak_preference" android:key="select_to_speak_preference"
android:persistent="true" android:persistent="true"
android:summary="@string/select_to_speak_summary" /> android:summary="@string/select_to_speak_summary"/>
<Preference <com.android.settingslib.RestrictedPreference
android:fragment="com.android.settings.accessibility.ToggleScreenReaderPreferenceFragmentForSetupWizard" android:fragment="com.android.settings.accessibility.ToggleScreenReaderPreferenceFragmentForSetupWizard"
android:key="screen_reader_preference" android:key="screen_reader_preference"
android:persistent="true" android:persistent="true"
android:summary="@string/talkback_summary" /> android:summary="@string/talkback_summary"/>
</PreferenceScreen> </PreferenceScreen>

View File

@@ -16,24 +16,32 @@
package com.android.settings.accessibility; package com.android.settings.accessibility;
import static com.android.settings.Utils.getAdaptiveIcon;
import static com.android.settings.accessibility.AccessibilityUtil.AccessibilityServiceFragmentType.VOLUME_SHORTCUT_TOGGLE; import static com.android.settings.accessibility.AccessibilityUtil.AccessibilityServiceFragmentType.VOLUME_SHORTCUT_TOGGLE;
import static com.android.settingslib.widget.TwoTargetPreference.ICON_SIZE_MEDIUM;
import android.accessibilityservice.AccessibilityServiceInfo; import android.accessibilityservice.AccessibilityServiceInfo;
import android.app.settings.SettingsEnums; import android.app.settings.SettingsEnums;
import android.content.ComponentName; import android.content.ComponentName;
import android.content.Context; import android.content.Context;
import android.content.pm.ServiceInfo; import android.content.pm.ServiceInfo;
import android.graphics.Color;
import android.graphics.drawable.Drawable;
import android.os.Bundle; import android.os.Bundle;
import android.view.Gravity;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.view.accessibility.AccessibilityManager; import android.view.accessibility.AccessibilityManager;
import android.widget.FrameLayout;
import android.widget.ImageView;
import androidx.preference.Preference; import androidx.preference.Preference;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.SettingsPreferenceFragment; import com.android.settings.SettingsPreferenceFragment;
import com.android.settingslib.RestrictedPreference;
import com.google.android.setupdesign.GlifPreferenceLayout; import com.google.android.setupdesign.GlifPreferenceLayout;
@@ -61,8 +69,8 @@ public class AccessibilitySettingsForSetupWizard extends SettingsPreferenceFragm
// Preference controls. // Preference controls.
private Preference mDisplayMagnificationPreference; private Preference mDisplayMagnificationPreference;
private Preference mScreenReaderPreference; private RestrictedPreference mScreenReaderPreference;
private Preference mSelectToSpeakPreference; private RestrictedPreference mSelectToSpeakPreference;
@Override @Override
public int getMetricsCategory() { public int getMetricsCategory() {
@@ -73,16 +81,24 @@ public class AccessibilitySettingsForSetupWizard extends SettingsPreferenceFragm
public void onViewCreated(View view, Bundle savedInstanceState) { public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState); super.onViewCreated(view, savedInstanceState);
GlifPreferenceLayout layout = (GlifPreferenceLayout) view; final GlifPreferenceLayout layout = (GlifPreferenceLayout) view;
layout.setDividerInsets(Integer.MAX_VALUE, 0); layout.setDividerInsets(Integer.MAX_VALUE, 0);
layout.setDescriptionText(R.string.vision_settings_description);
layout.setHeaderText(R.string.vision_settings_title); layout.setHeaderText(R.string.vision_settings_title);
layout.setIcon(getResources().getDrawable(R.drawable.ic_accessibility_visibility));
final ImageView iconView = layout.findManagedViewById(R.id.sud_layout_icon);
final FrameLayout.LayoutParams params =
(FrameLayout.LayoutParams) iconView.getLayoutParams();
params.gravity = Gravity.START;
layout.getHeaderTextView().setGravity(Gravity.START);
layout.getDescriptionTextView().setGravity(Gravity.START);
} }
@Override @Override
public RecyclerView onCreateRecyclerView(LayoutInflater inflater, ViewGroup parent, public RecyclerView onCreateRecyclerView(LayoutInflater inflater, ViewGroup parent,
Bundle savedInstanceState) { Bundle savedInstanceState) {
GlifPreferenceLayout layout = (GlifPreferenceLayout) parent; final GlifPreferenceLayout layout = (GlifPreferenceLayout) parent;
return layout.onCreateRecyclerView(inflater, parent, savedInstanceState); return layout.onCreateRecyclerView(inflater, parent, savedInstanceState);
} }
@@ -145,7 +161,7 @@ public class AccessibilitySettingsForSetupWizard extends SettingsPreferenceFragm
return null; return null;
} }
private void updateAccessibilityServicePreference(Preference preference, private void updateAccessibilityServicePreference(RestrictedPreference preference,
String packageName, String serviceName, String targetFragment) { String packageName, String serviceName, String targetFragment) {
final AccessibilityServiceInfo info = findService(packageName, serviceName); final AccessibilityServiceInfo info = findService(packageName, serviceName);
if (info == null) { if (info == null) {
@@ -153,24 +169,28 @@ public class AccessibilitySettingsForSetupWizard extends SettingsPreferenceFragm
return; return;
} }
ServiceInfo serviceInfo = info.getResolveInfo().serviceInfo; final ServiceInfo serviceInfo = info.getResolveInfo().serviceInfo;
String title = info.getResolveInfo().loadLabel(getPackageManager()).toString(); final Drawable icon = info.getResolveInfo().loadIcon(getPackageManager());
preference.setIcon(getAdaptiveIcon(getContext(), icon, Color.WHITE));
preference.setIconSize(ICON_SIZE_MEDIUM);
final String title = info.getResolveInfo().loadLabel(getPackageManager()).toString();
preference.setTitle(title); preference.setTitle(title);
ComponentName componentName = new ComponentName(serviceInfo.packageName, serviceInfo.name); final ComponentName componentName =
new ComponentName(serviceInfo.packageName, serviceInfo.name);
preference.setKey(componentName.flattenToString()); preference.setKey(componentName.flattenToString());
if (AccessibilityUtil.getAccessibilityServiceFragmentType(info) == VOLUME_SHORTCUT_TOGGLE) { if (AccessibilityUtil.getAccessibilityServiceFragmentType(info) == VOLUME_SHORTCUT_TOGGLE) {
preference.setFragment(targetFragment); preference.setFragment(targetFragment);
} }
// Update the extras. // Update the extras.
Bundle extras = preference.getExtras(); final Bundle extras = preference.getExtras();
extras.putParcelable(AccessibilitySettings.EXTRA_COMPONENT_NAME, componentName); extras.putParcelable(AccessibilitySettings.EXTRA_COMPONENT_NAME, componentName);
extras.putString(AccessibilitySettings.EXTRA_PREFERENCE_KEY, extras.putString(AccessibilitySettings.EXTRA_PREFERENCE_KEY,
preference.getKey()); preference.getKey());
extras.putString(AccessibilitySettings.EXTRA_TITLE, title); extras.putString(AccessibilitySettings.EXTRA_TITLE, title);
String description = info.loadDescription(getPackageManager()); final String description = info.loadDescription(getPackageManager());
extras.putString(AccessibilitySettings.EXTRA_SUMMARY, description); extras.putString(AccessibilitySettings.EXTRA_SUMMARY, description);
extras.putInt(AccessibilitySettings.EXTRA_ANIMATED_IMAGE_RES, info.getAnimatedImageRes()); extras.putInt(AccessibilitySettings.EXTRA_ANIMATED_IMAGE_RES, info.getAnimatedImageRes());