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));
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);
mEntityHeaderController.setLabel(mAccessPoint.getTitle());
@@ -602,10 +601,9 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController
mRssiSignalLevel = signalLevel;
Drawable wifiIcon = mIconInjector.getIcon(mRssiSignalLevel);
wifiIcon.setTintList(Utils.getColorAccent(mContext));
if (mEntityHeaderController != null) {
mEntityHeaderController
.setIcon(rescaleIconForHeader(wifiIcon)).done(mFragment.getActivity(),
.setIcon(redrawIconForHeader(wifiIcon)).done(mFragment.getActivity(),
true /* rebind */);
}
@@ -617,7 +615,7 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController
mSignalStrengthPref.setVisible(true);
}
private Drawable rescaleIconForHeader(Drawable original) {
private Drawable redrawIconForHeader(Drawable original) {
final int iconSize = mContext.getResources().getDimensionPixelSize(
R.dimen.wifi_detail_page_header_image_size);
final int actualWidth = original.getMinimumWidth();
@@ -628,10 +626,19 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController
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,
iconSize /*width*/,
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() {

View File

@@ -36,6 +36,7 @@ import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Drawable;
import android.net.ConnectivityManager;
@@ -69,6 +70,7 @@ import com.android.internal.logging.nano.MetricsProto;
import com.android.settings.R;
import com.android.settings.core.FeatureFlags;
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.ShadowEntityHeaderController;
import com.android.settings.widget.EntityHeaderController;
@@ -1458,6 +1460,36 @@ public class WifiDetailPreferenceControllerTest {
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() {
final ActionButtonsPreference pref = mock(ActionButtonsPreference.class);
when(pref.setButton1Text(anyInt())).thenReturn(pref);