Skip to content
Snippets Groups Projects
Commit fc6ff5a9 authored by Yalan Yiue's avatar Yalan Yiue Committed by Android (Google) Code Review
Browse files

Merge "Add focus outline to the brightness slider" into main

parents 584f2b26 129343f7
No related branches found
No related tags found
No related merge requests found
......@@ -803,6 +803,13 @@ flag {
bug: "312899524"
}
flag {
name: "brightness_slider_focus_state"
namespace: "systemui"
description: "enables new focus outline for the brightness slider when focused on with physical keyboard"
bug: "329244723"
}
flag {
name: "edgeback_gesture_handler_get_running_tasks_background"
namespace: "systemui"
......
......@@ -14,7 +14,15 @@
~ See the License for the specific language governing permissions and
~ limitations under the License
-->
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="?attr/underSurface" />
<corners android:radius="@dimen/rounded_slider_background_rounded_corner" />
</shape>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:left="@dimen/rounded_slider_boundary_offset"
android:right="@dimen/rounded_slider_boundary_offset"
android:top="@dimen/rounded_slider_boundary_offset"
android:bottom="@dimen/rounded_slider_boundary_offset">
<shape>
<solid android:color="?attr/underSurface" />
<corners android:radius="@dimen/rounded_slider_background_rounded_corner" />
</shape>
</item>
</layer-list>
<?xml version="1.0" encoding="utf-8"?>
<!--
~ Copyright (C) 2024 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.
-->
<selector
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:androidprv="http://schemas.android.com/apk/prv/res/android">
<item android:state_focused="true">
<inset android:inset="-5dp">
<shape>
<corners android:radius="16dp"/>
<stroke android:width="3dp" android:color="?androidprv:attr/materialColorSecondaryFixed"/>
</shape>
</inset>
</item>
</selector>
\ No newline at end of file
......@@ -17,19 +17,20 @@
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/brightness_slider"
android:layout_width="match_parent"
android:layout_height="@dimen/brightness_mirror_height"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:clipChildren="false"
android:clipToPadding="false"
android:contentDescription="@string/accessibility_brightness"
android:importantForAccessibility="no" >
<com.android.systemui.settings.brightness.ToggleSeekBar
android:id="@+id/slider"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_height="@dimen/brightness_mirror_height"
android:layout_gravity="center_vertical"
android:minHeight="48dp"
android:thumb="@null"
android:background="@null"
android:paddingStart="0dp"
android:paddingEnd="0dp"
android:progressDrawable="@drawable/brightness_progress_drawable"
......
......@@ -1674,6 +1674,7 @@
<dimen name="rounded_slider_background_padding">8dp</dimen>
<!-- rounded_slider_corner_radius + rounded_slider_background_padding -->
<dimen name="rounded_slider_background_rounded_corner">32dp</dimen>
<dimen name="rounded_slider_boundary_offset">16dp</dimen>
<!-- Location on the screen of the center of the physical power button. This is a reasonable
default that should be overridden by device-specific overlays. -->
......
......@@ -67,6 +67,7 @@ public class BrightnessSliderView extends FrameLayout {
mSlider = requireViewById(R.id.slider);
mSlider.setAccessibilityLabel(getContentDescription().toString());
setBoundaryOffset();
// Finds the progress drawable. Assumes brightness_progress_drawable.xml
try {
......@@ -80,6 +81,17 @@ public class BrightnessSliderView extends FrameLayout {
}
}
private void setBoundaryOffset() {
// BrightnessSliderView uses hardware layer; if the background of its children exceed its
// boundary, it'll be cropped. We need to expand its boundary so that the background of
// ToggleSeekBar (i.e. the focus state) can be correctly rendered.
int offset = getResources().getDimensionPixelSize(R.dimen.rounded_slider_boundary_offset);
MarginLayoutParams lp = (MarginLayoutParams) getLayoutParams();
lp.setMargins(-offset, -offset, -offset, -offset);
setLayoutParams(lp);
setPadding(offset, offset, offset, offset);
}
/**
* Attaches a listener to relay touch events.
* @param listener use {@code null} to remove listener
......
......@@ -16,12 +16,16 @@
package com.android.systemui.settings.brightness;
import static com.android.systemui.Flags.brightnessSliderFocusState;
import android.content.Context;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.accessibility.AccessibilityNodeInfo;
import android.widget.SeekBar;
import com.android.systemui.res.R;
public class ToggleSeekBar extends SeekBar {
private String mAccessibilityLabel;
......@@ -61,6 +65,14 @@ public class ToggleSeekBar extends SeekBar {
return true;
}
@Override
protected void onFinishInflate() {
super.onFinishInflate();
if (brightnessSliderFocusState()) {
setBackground(mContext.getDrawable(R.drawable.brightness_slider_focus_bg));
}
}
public void setAccessibilityLabel(String label) {
mAccessibilityLabel = label;
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment