Fix keyguard and qs user switcher disabled state
- Set grayscale for disabled user's image - Set gray color for disabled icons - Set reduced alpha for disabled users Test: Manual test Bug: 155896542 Change-Id: I35ffb6382685ff5ed4f53a14fdc77517c83da306
This commit is contained in:
@@ -1,22 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<!--
|
||||
~ Copyright (C) 2016 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">
|
||||
<item android:state_enabled="false" android:color="?android:attr/textColorPrimary" />
|
||||
<item android:color="@android:color/transparent" />
|
||||
</selector>
|
||||
@@ -27,13 +27,13 @@
|
||||
android:gravity="end|center_vertical"
|
||||
android:clickable="true"
|
||||
android:background="@drawable/kg_user_switcher_rounded_bg"
|
||||
sysui:activatedTextAppearance="@style/TextAppearance.StatusBar.Expanded.UserSwitcher"
|
||||
sysui:regularTextAppearance="@style/TextAppearance.StatusBar.Expanded.UserSwitcher">
|
||||
<TextView android:id="@+id/user_name"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="25dp"
|
||||
android:layout_marginEnd="12dp"
|
||||
android:textAppearance="@style/TextAppearance.StatusBar.Expanded.UserSwitcher"
|
||||
/>
|
||||
<com.android.systemui.statusbar.phone.UserAvatarView android:id="@+id/user_picture"
|
||||
android:layout_width="@dimen/kg_framed_avatar_size"
|
||||
|
||||
@@ -39,8 +39,6 @@
|
||||
android:layout_width="@dimen/kg_framed_avatar_size"
|
||||
android:layout_height="@dimen/kg_framed_avatar_size"
|
||||
android:contentDescription="@null"
|
||||
android:backgroundTint="@color/qs_user_detail_avatar_tint"
|
||||
android:backgroundTintMode="src_atop"
|
||||
sysui:frameWidth="@dimen/keyguard_user_switcher_border_thickness"
|
||||
sysui:framePadding="2.5dp"
|
||||
sysui:badgeDiameter="18dp"
|
||||
|
||||
@@ -30,6 +30,7 @@
|
||||
android:clipToPadding="false"
|
||||
android:focusable="true"
|
||||
android:background="@drawable/ripple_drawable"
|
||||
systemui:activatedTextAppearance="@style/TextAppearance.QS.UserSwitcher"
|
||||
systemui:regularTextAppearance="@style/TextAppearance.QS.UserSwitcher">
|
||||
|
||||
<com.android.systemui.statusbar.phone.UserAvatarView
|
||||
@@ -37,8 +38,6 @@
|
||||
android:layout_width="@dimen/qs_framed_avatar_size"
|
||||
android:layout_height="@dimen/qs_framed_avatar_size"
|
||||
android:layout_marginBottom="7dp"
|
||||
android:backgroundTint="@color/qs_user_detail_avatar_tint"
|
||||
android:backgroundTintMode="src_atop"
|
||||
systemui:frameWidth="6dp"
|
||||
systemui:badgeDiameter="18dp"
|
||||
systemui:badgeMargin="1dp"
|
||||
|
||||
@@ -95,14 +95,11 @@ public class UserDetailItemView extends LinearLayout {
|
||||
mAvatar.setDrawableWithBadge(picture, userId);
|
||||
}
|
||||
|
||||
public void setAvatarEnabled(boolean enabled) {
|
||||
mAvatar.setEnabled(enabled);
|
||||
}
|
||||
|
||||
public void setDisabledByAdmin(boolean disabled) {
|
||||
mRestrictedPadlock.setVisibility(disabled ? View.VISIBLE : View.GONE);
|
||||
mName.setEnabled(!disabled);
|
||||
mAvatar.setEnabled(!disabled);
|
||||
if (mRestrictedPadlock != null) {
|
||||
mRestrictedPadlock.setVisibility(disabled ? View.VISIBLE : View.GONE);
|
||||
}
|
||||
setEnabled(!disabled);
|
||||
}
|
||||
|
||||
public void setEnabled(boolean enabled) {
|
||||
|
||||
@@ -16,8 +16,12 @@
|
||||
|
||||
package com.android.systemui.qs.tiles;
|
||||
|
||||
import static com.android.systemui.statusbar.policy.UserSwitcherController.USER_SWITCH_DISABLED_ALPHA;
|
||||
import static com.android.systemui.statusbar.policy.UserSwitcherController.USER_SWITCH_ENABLED_ALPHA;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.graphics.drawable.BitmapDrawable;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.graphics.drawable.LayerDrawable;
|
||||
import android.util.AttributeSet;
|
||||
@@ -94,18 +98,21 @@ public class UserDetailView extends PseudoGridView {
|
||||
}
|
||||
String name = getName(mContext, item);
|
||||
if (item.picture == null) {
|
||||
v.bind(name, getDrawable(mContext, item), item.resolveId());
|
||||
v.bind(name, getDrawable(mContext, item).mutate(), item.resolveId());
|
||||
} else {
|
||||
v.bind(name, item.picture, item.info.id);
|
||||
Drawable drawable = new BitmapDrawable(v.getResources(), item.picture);
|
||||
drawable.setColorFilter(
|
||||
item.isSwitchToEnabled ? null : getDisabledUserAvatarColorFilter());
|
||||
v.bind(name, drawable, item.info.id);
|
||||
}
|
||||
v.setActivated(item.isCurrent);
|
||||
v.setDisabledByAdmin(item.isDisabledByAdmin);
|
||||
v.setEnabled(item.isSwitchToEnabled);
|
||||
v.setAlpha(v.isEnabled() ? USER_SWITCH_ENABLED_ALPHA : USER_SWITCH_DISABLED_ALPHA);
|
||||
|
||||
if (item.isCurrent) {
|
||||
mCurrentUserView = v;
|
||||
}
|
||||
v.setDisabledByAdmin(item.isDisabledByAdmin);
|
||||
if (!item.isSwitchToEnabled) {
|
||||
v.setEnabled(false);
|
||||
}
|
||||
v.setTag(item);
|
||||
return v;
|
||||
}
|
||||
@@ -113,8 +120,14 @@ public class UserDetailView extends PseudoGridView {
|
||||
private static Drawable getDrawable(Context context,
|
||||
UserSwitcherController.UserRecord item) {
|
||||
Drawable icon = getIconDrawable(context, item);
|
||||
int iconColorRes = item.isCurrent ? R.color.qs_user_switcher_selected_avatar_icon_color
|
||||
: R.color.qs_user_switcher_avatar_icon_color;
|
||||
int iconColorRes;
|
||||
if (item.isCurrent) {
|
||||
iconColorRes = R.color.qs_user_switcher_selected_avatar_icon_color;
|
||||
} else if (!item.isSwitchToEnabled) {
|
||||
iconColorRes = R.color.GM2_grey_600;
|
||||
} else {
|
||||
iconColorRes = R.color.qs_user_switcher_avatar_icon_color;
|
||||
}
|
||||
icon.setTint(context.getResources().getColor(iconColorRes, context.getTheme()));
|
||||
|
||||
int bgRes = item.isCurrent ? R.drawable.bg_avatar_selected : R.drawable.qs_bg_avatar;
|
||||
|
||||
@@ -16,11 +16,15 @@
|
||||
|
||||
package com.android.systemui.statusbar.policy;
|
||||
|
||||
import static com.android.systemui.statusbar.policy.UserSwitcherController.USER_SWITCH_DISABLED_ALPHA;
|
||||
import static com.android.systemui.statusbar.policy.UserSwitcherController.USER_SWITCH_ENABLED_ALPHA;
|
||||
|
||||
import android.animation.Animator;
|
||||
import android.animation.AnimatorListenerAdapter;
|
||||
import android.animation.ObjectAnimator;
|
||||
import android.content.Context;
|
||||
import android.database.DataSetObserver;
|
||||
import android.graphics.drawable.BitmapDrawable;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.graphics.drawable.LayerDrawable;
|
||||
import android.util.AttributeSet;
|
||||
@@ -46,8 +50,6 @@ public class KeyguardUserSwitcher {
|
||||
|
||||
private static final String TAG = "KeyguardUserSwitcher";
|
||||
private static final boolean ALWAYS_ON = false;
|
||||
private static final float USER_SWITCH_ENABLED_ALPHA = 1.0f;
|
||||
private static final float USER_SWITCH_DISABLED_ALPHA = 0.38f;
|
||||
|
||||
private final Container mUserSwitcherContainer;
|
||||
private final KeyguardStatusBarView mStatusBarView;
|
||||
@@ -286,27 +288,34 @@ public class KeyguardUserSwitcher {
|
||||
if (item.picture == null) {
|
||||
v.bind(name, getDrawable(mContext, item).mutate(), item.resolveId());
|
||||
} else {
|
||||
v.bind(name, item.picture, item.info.id);
|
||||
Drawable drawable = new BitmapDrawable(v.getResources(), item.picture);
|
||||
drawable.setColorFilter(
|
||||
item.isSwitchToEnabled ? null : getDisabledUserAvatarColorFilter());
|
||||
v.bind(name, drawable, item.info.id);
|
||||
}
|
||||
// Disable the icon if switching is disabled
|
||||
v.setAvatarEnabled(item.isSwitchToEnabled);
|
||||
convertView.setActivated(item.isCurrent);
|
||||
v.setActivated(item.isCurrent);
|
||||
v.setDisabledByAdmin(item.isDisabledByAdmin);
|
||||
v.setEnabled(item.isSwitchToEnabled);
|
||||
v.setAlpha(v.isEnabled() ? USER_SWITCH_ENABLED_ALPHA : USER_SWITCH_DISABLED_ALPHA);
|
||||
|
||||
if (item.isCurrent) {
|
||||
mCurrentUserView = convertView;
|
||||
mCurrentUserView = v;
|
||||
}
|
||||
convertView.setTag(item);
|
||||
convertView.setAlpha(
|
||||
item.isCurrent || item.isSwitchToEnabled ? USER_SWITCH_ENABLED_ALPHA
|
||||
: USER_SWITCH_DISABLED_ALPHA);
|
||||
convertView.setEnabled(item.isSwitchToEnabled);
|
||||
return convertView;
|
||||
v.setTag(item);
|
||||
return v;
|
||||
}
|
||||
|
||||
private static Drawable getDrawable(Context context,
|
||||
UserSwitcherController.UserRecord item) {
|
||||
Drawable drawable = getIconDrawable(context, item);
|
||||
int iconColorRes = item.isCurrent ? R.color.kg_user_switcher_selected_avatar_icon_color
|
||||
: R.color.kg_user_switcher_avatar_icon_color;
|
||||
int iconColorRes;
|
||||
if (item.isCurrent) {
|
||||
iconColorRes = R.color.kg_user_switcher_selected_avatar_icon_color;
|
||||
} else if (!item.isSwitchToEnabled) {
|
||||
iconColorRes = R.color.GM2_grey_600;
|
||||
} else {
|
||||
iconColorRes = R.color.kg_user_switcher_avatar_icon_color;
|
||||
}
|
||||
drawable.setTint(context.getResources().getColor(iconColorRes, context.getTheme()));
|
||||
|
||||
if (item.isCurrent) {
|
||||
|
||||
@@ -31,6 +31,9 @@ import android.content.IntentFilter;
|
||||
import android.content.pm.UserInfo;
|
||||
import android.database.ContentObserver;
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.ColorFilter;
|
||||
import android.graphics.ColorMatrix;
|
||||
import android.graphics.ColorMatrixColorFilter;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.os.AsyncTask;
|
||||
import android.os.Handler;
|
||||
@@ -81,6 +84,9 @@ import javax.inject.Singleton;
|
||||
@Singleton
|
||||
public class UserSwitcherController implements Dumpable {
|
||||
|
||||
public static final float USER_SWITCH_ENABLED_ALPHA = 1.0f;
|
||||
public static final float USER_SWITCH_DISABLED_ALPHA = 0.38f;
|
||||
|
||||
private static final String TAG = "UserSwitcherController";
|
||||
private static final boolean DEBUG = false;
|
||||
private static final String SIMPLE_USER_SWITCHER_GLOBAL_SETTING =
|
||||
@@ -674,6 +680,12 @@ public class UserSwitcherController implements Dumpable {
|
||||
}
|
||||
}
|
||||
|
||||
protected static ColorFilter getDisabledUserAvatarColorFilter() {
|
||||
ColorMatrix matrix = new ColorMatrix();
|
||||
matrix.setSaturation(0f); // 0 - grayscale
|
||||
return new ColorMatrixColorFilter(matrix);
|
||||
}
|
||||
|
||||
protected static Drawable getIconDrawable(Context context, UserRecord item) {
|
||||
int iconRes;
|
||||
if (item.isAddUser) {
|
||||
|
||||
Reference in New Issue
Block a user