Visual changes in QS and made targets clickable
* Added clickable targets and intents to Next alarm, Ringer mode and QSCarrier items. This includes making the tap targets 48dp high. * Added contentDescription to alarm icon in QS Header info * Changed icons to ones without inset so views are properly aligned * Made text in QS header marquee * Reduces vertical margin between tiles in landscape to fit 2 rows (when not in VPN). * Correctly align all children of QuickStatusBarHeader that should be aligned Test: visual Test: manual, tap targets go to correct destination Fixes: 129350749 Change-Id: I6cc984ec4d58bf1afc9eb6822ded786591f5c7b8
This commit is contained in:
@@ -21,8 +21,6 @@
|
||||
android:id="@+id/privacy_chip"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_marginLeft="@dimen/ongoing_appops_chip_margin"
|
||||
android:layout_marginRight="@dimen/ongoing_appops_chip_margin"
|
||||
android:layout_gravity="center_vertical|end"
|
||||
android:gravity="center_vertical"
|
||||
android:orientation="horizontal"
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
android:id="@+id/linear_carrier"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:minWidth="48dp"
|
||||
android:orientation="horizontal"
|
||||
android:gravity="center_vertical|start"
|
||||
android:background="@android:color/transparent"
|
||||
|
||||
@@ -21,8 +21,8 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/qs_header_top_margin"
|
||||
android:layout_marginBottom="14dp"
|
||||
android:layout_marginStart="@dimen/status_bar_padding_start"
|
||||
android:layout_marginEnd="@dimen/status_bar_padding_end"
|
||||
android:paddingStart="@dimen/status_bar_padding_start"
|
||||
android:paddingEnd="@dimen/status_bar_padding_end"
|
||||
android:layout_below="@id/quick_status_bar_system_icons"
|
||||
android:clipChildren="false"
|
||||
android:clipToPadding="false"
|
||||
|
||||
@@ -19,7 +19,6 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/qs_header_tooltip_height"
|
||||
android:layout_below="@id/quick_status_bar_system_icons"
|
||||
android:layout_marginTop="@dimen/qs_header_top_margin"
|
||||
android:paddingStart="@dimen/status_bar_padding_start"
|
||||
android:paddingEnd="@dimen/status_bar_padding_end">
|
||||
|
||||
@@ -27,7 +26,7 @@
|
||||
android:id="@+id/long_press_tooltip"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="start|bottom"
|
||||
android:layout_gravity="start|center_vertical"
|
||||
android:alpha="0"
|
||||
android:text="@string/quick_settings_header_onboarding_text"
|
||||
android:textAppearance="@style/TextAppearance.QS.TileLabel"
|
||||
@@ -36,34 +35,48 @@
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="start|bottom"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_gravity="start|center_vertical"
|
||||
android:gravity="center_vertical">
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/status_container"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_gravity="start|center_vertical"
|
||||
android:layout_weight="1"
|
||||
android:gravity="center_vertical"
|
||||
android:alpha="0">
|
||||
android:alpha="0" >
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/next_alarm_icon"
|
||||
android:layout_width="@dimen/qs_header_alarm_icon_size"
|
||||
android:layout_height="@dimen/qs_header_alarm_icon_size"
|
||||
android:src="@drawable/stat_sys_alarm"
|
||||
android:tint="?android:attr/textColorPrimary"
|
||||
android:visibility="gone"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/next_alarm_text"
|
||||
<LinearLayout
|
||||
android:id = "@+id/alarm_container"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/qs_header_alarm_text_margin_start"
|
||||
android:textAppearance="@style/TextAppearance.QS.Status"
|
||||
android:visibility="gone"/>
|
||||
android:layout_height="match_parent"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:gravity="center_vertical"
|
||||
android:focusable="true"
|
||||
android:clickable="true">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/next_alarm_icon"
|
||||
android:layout_width="@dimen/qs_header_alarm_icon_size"
|
||||
android:layout_height="@dimen/qs_header_alarm_icon_size"
|
||||
android:src="@drawable/ic_alarm"
|
||||
android:tint="?android:attr/textColorPrimary"
|
||||
android:contentDescription="@string/accessibility_quick_settings_alarm_set"
|
||||
android:visibility="gone"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/next_alarm_text"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:singleLine="true"
|
||||
android:ellipsize="marquee"
|
||||
android:marqueeRepeatLimit="marquee_forever"
|
||||
android:layout_marginStart="@dimen/qs_header_alarm_text_margin_start"
|
||||
android:textAppearance="@style/TextAppearance.QS.Status"
|
||||
android:visibility="gone"/>
|
||||
</LinearLayout>
|
||||
|
||||
<View
|
||||
android:id="@+id/status_separator"
|
||||
@@ -71,20 +84,33 @@
|
||||
android:layout_height="match_parent"
|
||||
android:visibility="gone"/>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/ringer_mode_icon"
|
||||
android:layout_width="@dimen/qs_header_alarm_icon_size"
|
||||
android:layout_height="@dimen/qs_header_alarm_icon_size"
|
||||
android:tint="?android:attr/textColorPrimary"
|
||||
android:visibility="gone"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/ringer_mode_text"
|
||||
<LinearLayout
|
||||
android:id = "@+id/ringer_container"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/qs_header_alarm_text_margin_start"
|
||||
android:textAppearance="@style/TextAppearance.QS.Status"
|
||||
android:visibility="gone"/>
|
||||
android:layout_height="match_parent"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:gravity="center_vertical"
|
||||
android:focusable="true"
|
||||
android:clickable="true">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/ringer_mode_icon"
|
||||
android:layout_width="@dimen/qs_header_alarm_icon_size"
|
||||
android:layout_height="@dimen/qs_header_alarm_icon_size"
|
||||
android:tint="?android:attr/textColorPrimary"
|
||||
android:visibility="gone"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/ringer_mode_text"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:singleLine="true"
|
||||
android:ellipsize="marquee"
|
||||
android:marqueeRepeatLimit="marquee_forever"
|
||||
android:layout_marginStart="@dimen/qs_header_alarm_text_margin_start"
|
||||
android:textAppearance="@style/TextAppearance.QS.Status"
|
||||
android:visibility="gone"/>
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
|
||||
<View
|
||||
@@ -93,11 +119,13 @@
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1"/>
|
||||
|
||||
|
||||
<include layout="@layout/qs_carrier_group"
|
||||
android:id="@+id/carrier_group"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android_layout_gravity="center vertical|end"/>
|
||||
android:layout_height="match_parent"
|
||||
android:layout_gravity="end|center_vertical"
|
||||
android:focusable="false"/>
|
||||
</LinearLayout>
|
||||
|
||||
</FrameLayout>
|
||||
|
||||
@@ -24,8 +24,8 @@
|
||||
|
||||
<dimen name="brightness_mirror_height">40dp</dimen>
|
||||
|
||||
<dimen name="qs_tile_margin_top">2dp</dimen>
|
||||
<dimen name="qs_header_tooltip_height">24dp</dimen>
|
||||
<dimen name="qs_tile_margin_top">8dp</dimen>
|
||||
<dimen name="qs_tile_margin_vertical">0dp</dimen>
|
||||
|
||||
<dimen name="battery_detail_graph_space_top">9dp</dimen>
|
||||
<dimen name="battery_detail_graph_space_bottom">9dp</dimen>
|
||||
|
||||
@@ -437,7 +437,7 @@
|
||||
<dimen name="qs_tile_padding_bottom">16dp</dimen>
|
||||
<dimen name="qs_tile_spacing">4dp</dimen>
|
||||
<dimen name="qs_panel_padding_bottom">0dp</dimen>
|
||||
<dimen name="qs_panel_padding_top">30dp</dimen>
|
||||
<dimen name="qs_panel_padding_top">@dimen/qs_header_tooltip_height</dimen>
|
||||
<dimen name="qs_detail_header_height">56dp</dimen>
|
||||
<dimen name="qs_detail_header_padding">0dp</dimen>
|
||||
<dimen name="qs_detail_image_width">56dp</dimen>
|
||||
@@ -461,8 +461,8 @@
|
||||
<dimen name="qs_detail_item_icon_width">32dp</dimen>
|
||||
<dimen name="qs_detail_item_icon_marginStart">0dp</dimen>
|
||||
<dimen name="qs_detail_item_icon_marginEnd">20dp</dimen>
|
||||
<dimen name="qs_header_tooltip_height">18dp</dimen>
|
||||
<dimen name="qs_header_alarm_icon_size">18dp</dimen>
|
||||
<dimen name="qs_header_tooltip_height">48dp</dimen>
|
||||
<dimen name="qs_header_alarm_icon_size">@dimen/status_bar_icon_drawing_size</dimen>
|
||||
<dimen name="qs_header_mobile_icon_size">@dimen/status_bar_icon_drawing_size</dimen>
|
||||
<dimen name="qs_header_alarm_text_margin_start">6dp</dimen>
|
||||
<dimen name="qs_header_separator_width">8dp</dimen>
|
||||
@@ -473,7 +473,7 @@
|
||||
<dimen name="qs_footer_padding_end">16dp</dimen>
|
||||
<dimen name="qs_footer_icon_size">16dp</dimen>
|
||||
<dimen name="qs_paged_tile_layout_padding_bottom">0dp</dimen>
|
||||
<dimen name="qs_header_top_margin">12dp</dimen>
|
||||
<dimen name="qs_header_top_margin">15dp</dimen>
|
||||
|
||||
<dimen name="qs_notif_collapsed_space">64dp</dimen>
|
||||
|
||||
@@ -1031,8 +1031,6 @@
|
||||
<dimen name="ongoing_appops_dialog_title_size">20sp</dimen>
|
||||
<!-- Text size for Ongoing App Ops dialog items -->
|
||||
<dimen name="ongoing_appops_dialog_item_size">16sp</dimen>
|
||||
<!-- Side margins around the Ongoing App Ops chip-->
|
||||
<dimen name="ongoing_appops_chip_margin">0dp</dimen>
|
||||
<!-- Height of the Ongoing App Ops chip -->
|
||||
<dimen name="ongoing_appops_chip_height">32dp</dimen>
|
||||
<!-- Padding between background of Ongoing App Ops chip and content -->
|
||||
|
||||
@@ -19,6 +19,8 @@ package com.android.systemui.qs;
|
||||
import static com.android.systemui.util.InjectionInflationController.VIEW_CONTEXT;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.provider.Settings;
|
||||
import android.telephony.SubscriptionManager;
|
||||
import android.util.AttributeSet;
|
||||
import android.util.Log;
|
||||
@@ -30,6 +32,7 @@ import androidx.annotation.VisibleForTesting;
|
||||
import com.android.keyguard.CarrierTextController;
|
||||
import com.android.systemui.Dependency;
|
||||
import com.android.systemui.R;
|
||||
import com.android.systemui.plugins.ActivityStarter;
|
||||
import com.android.systemui.statusbar.policy.NetworkController;
|
||||
|
||||
import javax.inject.Inject;
|
||||
@@ -40,7 +43,7 @@ import javax.inject.Named;
|
||||
*/
|
||||
public class QSCarrierGroup extends LinearLayout implements
|
||||
CarrierTextController.CarrierTextCallback,
|
||||
NetworkController.SignalCallback {
|
||||
NetworkController.SignalCallback, View.OnClickListener {
|
||||
|
||||
private static final String TAG = "QSCarrierGroup";
|
||||
/**
|
||||
@@ -53,20 +56,29 @@ public class QSCarrierGroup extends LinearLayout implements
|
||||
private QSCarrier[] mCarrierGroups = new QSCarrier[SIM_SLOTS];
|
||||
private final CellSignalState[] mInfos = new CellSignalState[SIM_SLOTS];
|
||||
private CarrierTextController mCarrierTextController;
|
||||
private ActivityStarter mActivityStarter;
|
||||
|
||||
private boolean mListening;
|
||||
|
||||
@Inject
|
||||
public QSCarrierGroup(@Named(VIEW_CONTEXT) Context context, AttributeSet attrs,
|
||||
NetworkController networkController) {
|
||||
NetworkController networkController, ActivityStarter activityStarter) {
|
||||
super(context, attrs);
|
||||
mNetworkController = networkController;
|
||||
mActivityStarter = activityStarter;
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
public QSCarrierGroup(Context context, AttributeSet attrs) {
|
||||
this(context, attrs,
|
||||
Dependency.get(NetworkController.class));
|
||||
Dependency.get(NetworkController.class),
|
||||
Dependency.get(ActivityStarter.class));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
mActivityStarter.postStartActivityDismissingKeyguard(new Intent(
|
||||
Settings.ACTION_WIRELESS_SETTINGS), 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -82,6 +94,7 @@ public class QSCarrierGroup extends LinearLayout implements
|
||||
|
||||
for (int i = 0; i < SIM_SLOTS; i++) {
|
||||
mInfos[i] = new CellSignalState();
|
||||
mCarrierGroups[i].setOnClickListener(this);
|
||||
}
|
||||
|
||||
CharSequence separator = mContext.getString(
|
||||
|
||||
@@ -300,6 +300,7 @@ public class QSPanel extends LinearLayout implements Tunable, Callback, Brightne
|
||||
protected void onConfigurationChanged(Configuration newConfig) {
|
||||
super.onConfigurationChanged(newConfig);
|
||||
mFooter.onConfigurationChanged();
|
||||
updateResources();
|
||||
|
||||
updateBrightnessMirror();
|
||||
}
|
||||
|
||||
@@ -35,6 +35,7 @@ import android.media.AudioManager;
|
||||
import android.os.Handler;
|
||||
import android.os.Looper;
|
||||
import android.provider.AlarmClock;
|
||||
import android.provider.Settings;
|
||||
import android.service.notification.ZenModeConfig;
|
||||
import android.text.format.DateUtils;
|
||||
import android.util.AttributeSet;
|
||||
@@ -133,9 +134,11 @@ public class QuickStatusBarHeader extends RelativeLayout implements
|
||||
private ImageView mNextAlarmIcon;
|
||||
/** {@link TextView} containing the actual text indicating when the next alarm will go off. */
|
||||
private TextView mNextAlarmTextView;
|
||||
private View mNextAlarmContainer;
|
||||
private View mStatusSeparator;
|
||||
private ImageView mRingerModeIcon;
|
||||
private TextView mRingerModeTextView;
|
||||
private View mRingerContainer;
|
||||
private Clock mClockView;
|
||||
private DateView mDateView;
|
||||
private OngoingPrivacyChip mPrivacyChip;
|
||||
@@ -203,10 +206,14 @@ public class QuickStatusBarHeader extends RelativeLayout implements
|
||||
mStatusSeparator = findViewById(R.id.status_separator);
|
||||
mNextAlarmIcon = findViewById(R.id.next_alarm_icon);
|
||||
mNextAlarmTextView = findViewById(R.id.next_alarm_text);
|
||||
mNextAlarmContainer = findViewById(R.id.alarm_container);
|
||||
mNextAlarmContainer.setOnClickListener(this::onClick);
|
||||
mRingerModeIcon = findViewById(R.id.ringer_mode_icon);
|
||||
mRingerModeTextView = findViewById(R.id.ringer_mode_text);
|
||||
mRingerContainer = findViewById(R.id.ringer_container);
|
||||
mRingerContainer.setOnClickListener(this::onClick);
|
||||
mPrivacyChip = findViewById(R.id.privacy_chip);
|
||||
mPrivacyChip.setOnClickListener(this);
|
||||
mPrivacyChip.setOnClickListener(this::onClick);
|
||||
mCarrierGroup = findViewById(R.id.carrier_group);
|
||||
|
||||
|
||||
@@ -236,6 +243,8 @@ public class QuickStatusBarHeader extends RelativeLayout implements
|
||||
// QS will always show the estimate, and BatteryMeterView handles the case where
|
||||
// it's unavailable or charging
|
||||
mBatteryRemainingIcon.setPercentShowMode(BatteryMeterView.MODE_ESTIMATE);
|
||||
mRingerModeTextView.setSelected(true);
|
||||
mNextAlarmTextView.setSelected(true);
|
||||
}
|
||||
|
||||
private List<String> getIgnoredIconSlots() {
|
||||
@@ -285,11 +294,11 @@ public class QuickStatusBarHeader extends RelativeLayout implements
|
||||
if (!ZenModeConfig.isZenOverridingRinger(mZenController.getZen(),
|
||||
mZenController.getConsolidatedPolicy())) {
|
||||
if (mRingerMode == AudioManager.RINGER_MODE_VIBRATE) {
|
||||
mRingerModeIcon.setImageResource(R.drawable.stat_sys_ringer_vibrate);
|
||||
mRingerModeIcon.setImageResource(R.drawable.ic_volume_ringer_vibrate);
|
||||
mRingerModeTextView.setText(R.string.qs_status_phone_vibrate);
|
||||
ringerVisible = true;
|
||||
} else if (mRingerMode == AudioManager.RINGER_MODE_SILENT) {
|
||||
mRingerModeIcon.setImageResource(R.drawable.stat_sys_ringer_silent);
|
||||
mRingerModeIcon.setImageResource(R.drawable.ic_volume_ringer_mute);
|
||||
mRingerModeTextView.setText(R.string.qs_status_phone_muted);
|
||||
ringerVisible = true;
|
||||
}
|
||||
@@ -546,7 +555,7 @@ public class QuickStatusBarHeader extends RelativeLayout implements
|
||||
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
if (v == mClockView) {
|
||||
if (v == mClockView || v == mNextAlarmContainer) {
|
||||
mActivityStarter.postStartActivityDismissingKeyguard(new Intent(
|
||||
AlarmClock.ACTION_SHOW_ALARMS),0);
|
||||
} else if (v == mPrivacyChip) {
|
||||
@@ -561,6 +570,9 @@ public class QuickStatusBarHeader extends RelativeLayout implements
|
||||
new Intent(Intent.ACTION_REVIEW_ONGOING_PERMISSION_USAGE), 0);
|
||||
mHost.collapsePanels();
|
||||
});
|
||||
} else if (v == mRingerContainer) {
|
||||
mActivityStarter.postStartActivityDismissingKeyguard(new Intent(
|
||||
Settings.ACTION_SOUND_SETTINGS), 0);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -573,7 +585,6 @@ public class QuickStatusBarHeader extends RelativeLayout implements
|
||||
@Override
|
||||
public void onZenChanged(int zen) {
|
||||
updateStatusText();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -731,8 +742,10 @@ public class QuickStatusBarHeader extends RelativeLayout implements
|
||||
public void setMargins(int sideMargins) {
|
||||
for (int i = 0; i < getChildCount(); i++) {
|
||||
View v = getChildAt(i);
|
||||
// Prevents these views from getting set a margin.
|
||||
// The Icon views all have the same padding set in XML to be aligned.
|
||||
if (v == mSystemIconsView || v == mQuickQsStatusIcons || v == mHeaderQsPanel
|
||||
|| v == mPrivacyChip) {
|
||||
|| v == mHeaderTextContainerView) {
|
||||
continue;
|
||||
}
|
||||
RelativeLayout.LayoutParams lp = (RelativeLayout.LayoutParams) v.getLayoutParams();
|
||||
|
||||
Reference in New Issue
Block a user