Redraw WiFi detail page's header icon

Tint 87% dark in day mode and 100% white for night mode

Bug: 129413562
Test: make RunSettingsRoboTests -j32 ROBOTEST_FILTER=com.android.settings.wifi.details.WifiDetailPreferenceControllerTest
Test: manual test
Change-Id: Ia31231ca7871ac4efcea5e1232690ff4374df5b3
(cherry picked from commit 86f65ef488)
This commit is contained in:
clownshen
2019-04-02 19:28:56 +08:00
committed by Clown SHEN
parent 73f539d296
commit 6ef1eec2e2
2 changed files with 45 additions and 6 deletions

View File

@@ -449,8 +449,7 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController
headerPref.findViewById(R.id.entity_header)); headerPref.findViewById(R.id.entity_header));
ImageView iconView = headerPref.findViewById(R.id.entity_header_icon); ImageView iconView = headerPref.findViewById(R.id.entity_header_icon);
iconView.setBackground(
mContext.getDrawable(R.drawable.ic_settings_widget_background));
iconView.setScaleType(ImageView.ScaleType.CENTER_INSIDE); iconView.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
mEntityHeaderController.setLabel(mAccessPoint.getTitle()); mEntityHeaderController.setLabel(mAccessPoint.getTitle());
@@ -602,10 +601,9 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController
mRssiSignalLevel = signalLevel; mRssiSignalLevel = signalLevel;
Drawable wifiIcon = mIconInjector.getIcon(mRssiSignalLevel); Drawable wifiIcon = mIconInjector.getIcon(mRssiSignalLevel);
wifiIcon.setTintList(Utils.getColorAccent(mContext));
if (mEntityHeaderController != null) { if (mEntityHeaderController != null) {
mEntityHeaderController mEntityHeaderController
.setIcon(rescaleIconForHeader(wifiIcon)).done(mFragment.getActivity(), .setIcon(redrawIconForHeader(wifiIcon)).done(mFragment.getActivity(),
true /* rebind */); true /* rebind */);
} }
@@ -617,7 +615,7 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController
mSignalStrengthPref.setVisible(true); mSignalStrengthPref.setVisible(true);
} }
private Drawable rescaleIconForHeader(Drawable original) { private Drawable redrawIconForHeader(Drawable original) {
final int iconSize = mContext.getResources().getDimensionPixelSize( final int iconSize = mContext.getResources().getDimensionPixelSize(
R.dimen.wifi_detail_page_header_image_size); R.dimen.wifi_detail_page_header_image_size);
final int actualWidth = original.getMinimumWidth(); final int actualWidth = original.getMinimumWidth();
@@ -628,10 +626,19 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController
return original; return original;
} }
// clear tint list to make sure can set 87% black after enlarge
original.setTintList(null);
// enlarge icon size
final Bitmap bitmap = Utils.createBitmap(original, final Bitmap bitmap = Utils.createBitmap(original,
iconSize /*width*/, iconSize /*width*/,
iconSize /*height*/); iconSize /*height*/);
return new BitmapDrawable(null /*resource*/, bitmap); Drawable newIcon = new BitmapDrawable(null /*resource*/, bitmap);
// config color for 87% black after enlarge
newIcon.setTintList(Utils.getColorAttr(mContext, android.R.attr.textColorPrimary));
return newIcon;
} }
private void refreshFrequency() { private void refreshFrequency() {

View File

@@ -36,6 +36,7 @@ import android.content.ComponentName;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.ColorDrawable; import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
import android.net.ConnectivityManager; import android.net.ConnectivityManager;
@@ -69,6 +70,7 @@ import com.android.internal.logging.nano.MetricsProto;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.core.FeatureFlags; import com.android.settings.core.FeatureFlags;
import com.android.settings.development.featureflags.FeatureFlagPersistent; import com.android.settings.development.featureflags.FeatureFlagPersistent;
import com.android.settings.Utils;
import com.android.settings.testutils.shadow.ShadowDevicePolicyManager; import com.android.settings.testutils.shadow.ShadowDevicePolicyManager;
import com.android.settings.testutils.shadow.ShadowEntityHeaderController; import com.android.settings.testutils.shadow.ShadowEntityHeaderController;
import com.android.settings.widget.EntityHeaderController; import com.android.settings.widget.EntityHeaderController;
@@ -1458,6 +1460,36 @@ public class WifiDetailPreferenceControllerTest {
verify(mockSignalStrengthPref, times(2)).setVisible(false); verify(mockSignalStrengthPref, times(2)).setVisible(false);
} }
@Test
public void testRedrawIconForHeader_shouldEnlarge() {
ArgumentCaptor<BitmapDrawable> drawableCaptor =
ArgumentCaptor.forClass(BitmapDrawable.class);
Drawable original = mContext.getDrawable(Utils.getWifiIconResource(LEVEL)).mutate();
when(mockIconInjector.getIcon(anyInt())).thenReturn(original);
displayAndResume();
verify(mockHeaderController, times(1)).setIcon(drawableCaptor.capture());
int expectedSize = mContext.getResources().getDimensionPixelSize(
R.dimen.wifi_detail_page_header_image_size);
BitmapDrawable icon = drawableCaptor.getValue();
assertThat(icon.getMinimumWidth()).isEqualTo(expectedSize);
assertThat(icon.getMinimumHeight()).isEqualTo(expectedSize);
}
@Test
public void testRedrawIconForHeader_shouldNotEnlargeIfNotVectorDrawable() {
ArgumentCaptor<ColorDrawable> drawableCaptor =
ArgumentCaptor.forClass(ColorDrawable.class);
displayAndResume();
verify(mockHeaderController, times(1)).setIcon(drawableCaptor.capture());
ColorDrawable icon = drawableCaptor.getValue();
assertThat(icon).isNotNull();
}
private ActionButtonsPreference createMock() { private ActionButtonsPreference createMock() {
final ActionButtonsPreference pref = mock(ActionButtonsPreference.class); final ActionButtonsPreference pref = mock(ActionButtonsPreference.class);
when(pref.setButton1Text(anyInt())).thenReturn(pref); when(pref.setButton1Text(anyInt())).thenReturn(pref);