Loading res/xml/accessibility_button_settings.xml +1 −1 Original line number Diff line number Diff line Loading @@ -57,7 +57,7 @@ android:key="accessibility_button_opacity" android:title="@string/accessibility_button_opacity_title" android:persistent="false" settings:controller="com.android.settings.accessibility.FloatingMenuOpacityPreferenceController"/> settings:controller="com.android.settings.accessibility.FloatingMenuTransparencyPreferenceController"/> <com.android.settings.accessibility.AccessibilityFooterPreference android:key="accessibility_button_footer" Loading src/com/android/settings/accessibility/FloatingMenuOpacityPreferenceController.java→src/com/android/settings/accessibility/FloatingMenuTransparencyPreferenceController.java +20 −17 Original line number Diff line number Diff line Loading @@ -23,6 +23,7 @@ import android.os.Handler; import android.os.Looper; import android.provider.Settings; import androidx.annotation.FloatRange; import androidx.annotation.VisibleForTesting; import androidx.preference.PreferenceScreen; Loading @@ -32,15 +33,18 @@ import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settingslib.core.lifecycle.events.OnPause; import com.android.settingslib.core.lifecycle.events.OnResume; /** Preference controller that controls the opacity seekbar in accessibility button page. */ public class FloatingMenuOpacityPreferenceController extends SliderPreferenceController /** Preference controller that controls the transparency seekbar in accessibility button page. */ public class FloatingMenuTransparencyPreferenceController extends SliderPreferenceController implements LifecycleObserver, OnResume, OnPause { @VisibleForTesting static final float DEFAULT_OPACITY = 0.55f; @FloatRange(from = 0.0, to = 1.0) static final float DEFAULT_TRANSPARENCY = 0.45f; @VisibleForTesting static final float MAXIMUM_TRANSPARENCY = 1.0f; private static final int FADE_ENABLED = 1; private static final float MIN_PROGRESS = 10f; private static final float MAX_PROGRESS = 100f; private static final float MIN_PROGRESS = 0f; private static final float MAX_PROGRESS = 90f; @VisibleForTesting static final float PRECISION = 100f; Loading @@ -51,7 +55,7 @@ public class FloatingMenuOpacityPreferenceController extends SliderPreferenceCon @VisibleForTesting SeekBarPreference mPreference; public FloatingMenuOpacityPreferenceController(Context context, public FloatingMenuTransparencyPreferenceController(Context context, String preferenceKey) { super(context, preferenceKey); mContentResolver = context.getContentResolver(); Loading Loading @@ -101,15 +105,14 @@ public class FloatingMenuOpacityPreferenceController extends SliderPreferenceCon @Override public int getSliderPosition() { return convertOpacityFloatToInt(getOpacity()); return convertTransparencyFloatToInt(getTransparency()); } @Override public boolean setSliderPosition(int position) { final float value = convertOpacityIntToFloat(position); final float opacityValue = MAXIMUM_TRANSPARENCY - convertTransparencyIntToFloat(position); return Settings.Secure.putFloat(mContentResolver, Settings.Secure.ACCESSIBILITY_FLOATING_MENU_OPACITY, value); Settings.Secure.ACCESSIBILITY_FLOATING_MENU_OPACITY, opacityValue); } @Override Loading @@ -130,21 +133,21 @@ public class FloatingMenuOpacityPreferenceController extends SliderPreferenceCon mPreference.setEnabled(AccessibilityUtil.isFloatingMenuEnabled(mContext) && fadeEnabled); } private int convertOpacityFloatToInt(float value) { private int convertTransparencyFloatToInt(float value) { return Math.round(value * PRECISION); } private float convertOpacityIntToFloat(int value) { private float convertTransparencyIntToFloat(int value) { return (float) value / PRECISION; } private float getOpacity() { float value = Settings.Secure.getFloat(mContentResolver, Settings.Secure.ACCESSIBILITY_FLOATING_MENU_OPACITY, DEFAULT_OPACITY); private float getTransparency() { float transparencyValue = MAXIMUM_TRANSPARENCY - (Settings.Secure.getFloat(mContentResolver, Settings.Secure.ACCESSIBILITY_FLOATING_MENU_OPACITY, DEFAULT_TRANSPARENCY)); final float minValue = MIN_PROGRESS / PRECISION; final float maxValue = MAX_PROGRESS / PRECISION; return (value < minValue || value > maxValue) ? DEFAULT_OPACITY : value; return (transparencyValue < minValue || transparencyValue > maxValue) ? DEFAULT_TRANSPARENCY : transparencyValue; } } tests/robotests/src/com/android/settings/accessibility/FloatingMenuOpacityPreferenceControllerTest.java→tests/robotests/src/com/android/settings/accessibility/FloatingMenuTransparencyPreferenceControllerTest.java +15 −11 Original line number Diff line number Diff line Loading @@ -19,8 +19,9 @@ package com.android.settings.accessibility; import static android.provider.Settings.Secure.ACCESSIBILITY_BUTTON_MODE_FLOATING_MENU; import static android.provider.Settings.Secure.ACCESSIBILITY_BUTTON_MODE_NAVIGATION_BAR; import static com.android.settings.accessibility.FloatingMenuOpacityPreferenceController.DEFAULT_OPACITY; import static com.android.settings.accessibility.FloatingMenuOpacityPreferenceController.PRECISION; import static com.android.settings.accessibility.FloatingMenuTransparencyPreferenceController.DEFAULT_TRANSPARENCY; import static com.android.settings.accessibility.FloatingMenuTransparencyPreferenceController.MAXIMUM_TRANSPARENCY; import static com.android.settings.accessibility.FloatingMenuTransparencyPreferenceController.PRECISION; import static com.android.settings.core.BasePreferenceController.AVAILABLE; import static com.android.settings.core.BasePreferenceController.DISABLED_DEPENDENT_SETTING; Loading @@ -47,9 +48,9 @@ import org.mockito.junit.MockitoJUnit; import org.mockito.junit.MockitoRule; import org.robolectric.RobolectricTestRunner; /** Tests for {@link FloatingMenuOpacityPreferenceController}. */ /** Tests for {@link FloatingMenuTransparencyPreferenceController}. */ @RunWith(RobolectricTestRunner.class) public class FloatingMenuOpacityPreferenceControllerTest { public class FloatingMenuTransparencyPreferenceControllerTest { @Rule public MockitoRule mocks = MockitoJUnit.rule(); Loading @@ -58,12 +59,12 @@ public class FloatingMenuOpacityPreferenceControllerTest { private final Context mContext = ApplicationProvider.getApplicationContext(); @Mock private ContentResolver mContentResolver; private FloatingMenuOpacityPreferenceController mController; private FloatingMenuTransparencyPreferenceController mController; @Before public void setUp() { when(mContext.getContentResolver()).thenReturn(mContentResolver); mController = new FloatingMenuOpacityPreferenceController(mContext, "test_key"); mController = new FloatingMenuTransparencyPreferenceController(mContext, "test_key"); } @Test Loading Loading @@ -95,10 +96,12 @@ public class FloatingMenuOpacityPreferenceControllerTest { @Test public void getSliderPosition_putNormalOpacityValue_expectedValue() { final float transparencyValue = 0.65f; Settings.Secure.putFloat(mContext.getContentResolver(), Settings.Secure.ACCESSIBILITY_FLOATING_MENU_OPACITY, 0.35f); Settings.Secure.ACCESSIBILITY_FLOATING_MENU_OPACITY, (MAXIMUM_TRANSPARENCY - transparencyValue)); assertThat(mController.getSliderPosition()).isEqualTo(35); assertThat(mController.getSliderPosition()).isEqualTo((int) (transparencyValue * 100)); } @Test Loading @@ -106,17 +109,18 @@ public class FloatingMenuOpacityPreferenceControllerTest { Settings.Secure.putFloat(mContext.getContentResolver(), Settings.Secure.ACCESSIBILITY_FLOATING_MENU_OPACITY, 0.01f); final int defaultValue = Math.round(DEFAULT_OPACITY * PRECISION); final int defaultValue = Math.round(DEFAULT_TRANSPARENCY * PRECISION); assertThat(mController.getSliderPosition()).isEqualTo(defaultValue); } @Test public void setSliderPosition_expectedValue() { mController.setSliderPosition(27); final float transparencyValue = 0.27f; mController.setSliderPosition((int) (transparencyValue * 100)); final float value = Settings.Secure.getFloat(mContext.getContentResolver(), Settings.Secure.ACCESSIBILITY_FLOATING_MENU_OPACITY, -1); assertThat(value).isEqualTo(0.27f); assertThat(value).isEqualTo((MAXIMUM_TRANSPARENCY - transparencyValue)); } @Test Loading Loading
res/xml/accessibility_button_settings.xml +1 −1 Original line number Diff line number Diff line Loading @@ -57,7 +57,7 @@ android:key="accessibility_button_opacity" android:title="@string/accessibility_button_opacity_title" android:persistent="false" settings:controller="com.android.settings.accessibility.FloatingMenuOpacityPreferenceController"/> settings:controller="com.android.settings.accessibility.FloatingMenuTransparencyPreferenceController"/> <com.android.settings.accessibility.AccessibilityFooterPreference android:key="accessibility_button_footer" Loading
src/com/android/settings/accessibility/FloatingMenuOpacityPreferenceController.java→src/com/android/settings/accessibility/FloatingMenuTransparencyPreferenceController.java +20 −17 Original line number Diff line number Diff line Loading @@ -23,6 +23,7 @@ import android.os.Handler; import android.os.Looper; import android.provider.Settings; import androidx.annotation.FloatRange; import androidx.annotation.VisibleForTesting; import androidx.preference.PreferenceScreen; Loading @@ -32,15 +33,18 @@ import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settingslib.core.lifecycle.events.OnPause; import com.android.settingslib.core.lifecycle.events.OnResume; /** Preference controller that controls the opacity seekbar in accessibility button page. */ public class FloatingMenuOpacityPreferenceController extends SliderPreferenceController /** Preference controller that controls the transparency seekbar in accessibility button page. */ public class FloatingMenuTransparencyPreferenceController extends SliderPreferenceController implements LifecycleObserver, OnResume, OnPause { @VisibleForTesting static final float DEFAULT_OPACITY = 0.55f; @FloatRange(from = 0.0, to = 1.0) static final float DEFAULT_TRANSPARENCY = 0.45f; @VisibleForTesting static final float MAXIMUM_TRANSPARENCY = 1.0f; private static final int FADE_ENABLED = 1; private static final float MIN_PROGRESS = 10f; private static final float MAX_PROGRESS = 100f; private static final float MIN_PROGRESS = 0f; private static final float MAX_PROGRESS = 90f; @VisibleForTesting static final float PRECISION = 100f; Loading @@ -51,7 +55,7 @@ public class FloatingMenuOpacityPreferenceController extends SliderPreferenceCon @VisibleForTesting SeekBarPreference mPreference; public FloatingMenuOpacityPreferenceController(Context context, public FloatingMenuTransparencyPreferenceController(Context context, String preferenceKey) { super(context, preferenceKey); mContentResolver = context.getContentResolver(); Loading Loading @@ -101,15 +105,14 @@ public class FloatingMenuOpacityPreferenceController extends SliderPreferenceCon @Override public int getSliderPosition() { return convertOpacityFloatToInt(getOpacity()); return convertTransparencyFloatToInt(getTransparency()); } @Override public boolean setSliderPosition(int position) { final float value = convertOpacityIntToFloat(position); final float opacityValue = MAXIMUM_TRANSPARENCY - convertTransparencyIntToFloat(position); return Settings.Secure.putFloat(mContentResolver, Settings.Secure.ACCESSIBILITY_FLOATING_MENU_OPACITY, value); Settings.Secure.ACCESSIBILITY_FLOATING_MENU_OPACITY, opacityValue); } @Override Loading @@ -130,21 +133,21 @@ public class FloatingMenuOpacityPreferenceController extends SliderPreferenceCon mPreference.setEnabled(AccessibilityUtil.isFloatingMenuEnabled(mContext) && fadeEnabled); } private int convertOpacityFloatToInt(float value) { private int convertTransparencyFloatToInt(float value) { return Math.round(value * PRECISION); } private float convertOpacityIntToFloat(int value) { private float convertTransparencyIntToFloat(int value) { return (float) value / PRECISION; } private float getOpacity() { float value = Settings.Secure.getFloat(mContentResolver, Settings.Secure.ACCESSIBILITY_FLOATING_MENU_OPACITY, DEFAULT_OPACITY); private float getTransparency() { float transparencyValue = MAXIMUM_TRANSPARENCY - (Settings.Secure.getFloat(mContentResolver, Settings.Secure.ACCESSIBILITY_FLOATING_MENU_OPACITY, DEFAULT_TRANSPARENCY)); final float minValue = MIN_PROGRESS / PRECISION; final float maxValue = MAX_PROGRESS / PRECISION; return (value < minValue || value > maxValue) ? DEFAULT_OPACITY : value; return (transparencyValue < minValue || transparencyValue > maxValue) ? DEFAULT_TRANSPARENCY : transparencyValue; } }
tests/robotests/src/com/android/settings/accessibility/FloatingMenuOpacityPreferenceControllerTest.java→tests/robotests/src/com/android/settings/accessibility/FloatingMenuTransparencyPreferenceControllerTest.java +15 −11 Original line number Diff line number Diff line Loading @@ -19,8 +19,9 @@ package com.android.settings.accessibility; import static android.provider.Settings.Secure.ACCESSIBILITY_BUTTON_MODE_FLOATING_MENU; import static android.provider.Settings.Secure.ACCESSIBILITY_BUTTON_MODE_NAVIGATION_BAR; import static com.android.settings.accessibility.FloatingMenuOpacityPreferenceController.DEFAULT_OPACITY; import static com.android.settings.accessibility.FloatingMenuOpacityPreferenceController.PRECISION; import static com.android.settings.accessibility.FloatingMenuTransparencyPreferenceController.DEFAULT_TRANSPARENCY; import static com.android.settings.accessibility.FloatingMenuTransparencyPreferenceController.MAXIMUM_TRANSPARENCY; import static com.android.settings.accessibility.FloatingMenuTransparencyPreferenceController.PRECISION; import static com.android.settings.core.BasePreferenceController.AVAILABLE; import static com.android.settings.core.BasePreferenceController.DISABLED_DEPENDENT_SETTING; Loading @@ -47,9 +48,9 @@ import org.mockito.junit.MockitoJUnit; import org.mockito.junit.MockitoRule; import org.robolectric.RobolectricTestRunner; /** Tests for {@link FloatingMenuOpacityPreferenceController}. */ /** Tests for {@link FloatingMenuTransparencyPreferenceController}. */ @RunWith(RobolectricTestRunner.class) public class FloatingMenuOpacityPreferenceControllerTest { public class FloatingMenuTransparencyPreferenceControllerTest { @Rule public MockitoRule mocks = MockitoJUnit.rule(); Loading @@ -58,12 +59,12 @@ public class FloatingMenuOpacityPreferenceControllerTest { private final Context mContext = ApplicationProvider.getApplicationContext(); @Mock private ContentResolver mContentResolver; private FloatingMenuOpacityPreferenceController mController; private FloatingMenuTransparencyPreferenceController mController; @Before public void setUp() { when(mContext.getContentResolver()).thenReturn(mContentResolver); mController = new FloatingMenuOpacityPreferenceController(mContext, "test_key"); mController = new FloatingMenuTransparencyPreferenceController(mContext, "test_key"); } @Test Loading Loading @@ -95,10 +96,12 @@ public class FloatingMenuOpacityPreferenceControllerTest { @Test public void getSliderPosition_putNormalOpacityValue_expectedValue() { final float transparencyValue = 0.65f; Settings.Secure.putFloat(mContext.getContentResolver(), Settings.Secure.ACCESSIBILITY_FLOATING_MENU_OPACITY, 0.35f); Settings.Secure.ACCESSIBILITY_FLOATING_MENU_OPACITY, (MAXIMUM_TRANSPARENCY - transparencyValue)); assertThat(mController.getSliderPosition()).isEqualTo(35); assertThat(mController.getSliderPosition()).isEqualTo((int) (transparencyValue * 100)); } @Test Loading @@ -106,17 +109,18 @@ public class FloatingMenuOpacityPreferenceControllerTest { Settings.Secure.putFloat(mContext.getContentResolver(), Settings.Secure.ACCESSIBILITY_FLOATING_MENU_OPACITY, 0.01f); final int defaultValue = Math.round(DEFAULT_OPACITY * PRECISION); final int defaultValue = Math.round(DEFAULT_TRANSPARENCY * PRECISION); assertThat(mController.getSliderPosition()).isEqualTo(defaultValue); } @Test public void setSliderPosition_expectedValue() { mController.setSliderPosition(27); final float transparencyValue = 0.27f; mController.setSliderPosition((int) (transparencyValue * 100)); final float value = Settings.Secure.getFloat(mContext.getContentResolver(), Settings.Secure.ACCESSIBILITY_FLOATING_MENU_OPACITY, -1); assertThat(value).isEqualTo(0.27f); assertThat(value).isEqualTo((MAXIMUM_TRANSPARENCY - transparencyValue)); } @Test Loading