Merge "Use adaptive icon shapes for settings homeepage"
This commit is contained in:
committed by
Android (Google) Code Review
commit
0e96dcc2a0
@@ -46,7 +46,7 @@ import com.android.settings.R;
|
||||
import com.android.settings.SettingsActivity;
|
||||
import com.android.settings.dashboard.profileselector.ProfileSelectDialog;
|
||||
import com.android.settings.overlay.FeatureFactory;
|
||||
import com.android.settings.widget.RoundedHomepageIcon;
|
||||
import com.android.settings.widget.AdaptiveHomepageIcon;
|
||||
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||
import com.android.settingslib.drawer.DashboardCategory;
|
||||
import com.android.settingslib.drawer.Tile;
|
||||
@@ -197,8 +197,8 @@ public class DashboardFeatureProviderImpl implements DashboardFeatureProvider {
|
||||
Drawable iconDrawable = tileIcon.loadDrawable(preference.getContext());
|
||||
if (forceRoundedIcon
|
||||
&& !TextUtils.equals(mContext.getPackageName(), tile.getPackageName())) {
|
||||
iconDrawable = new RoundedHomepageIcon(mContext, iconDrawable);
|
||||
((RoundedHomepageIcon) iconDrawable).setBackgroundColor(mContext, tile);
|
||||
iconDrawable = new AdaptiveHomepageIcon(mContext, iconDrawable);
|
||||
((AdaptiveHomepageIcon) iconDrawable).setBackgroundColor(mContext, tile);
|
||||
}
|
||||
preference.setIcon(iconDrawable);
|
||||
} else if (tile.getMetaData() != null
|
||||
|
||||
@@ -0,0 +1,43 @@
|
||||
package com.android.settings.homepage;
|
||||
|
||||
import android.content.res.Resources;
|
||||
import android.content.res.Resources.Theme;
|
||||
import android.graphics.Path;
|
||||
import android.graphics.drawable.AdaptiveIconDrawable;
|
||||
import android.graphics.drawable.ShapeDrawable;
|
||||
import android.graphics.drawable.shapes.PathShape;
|
||||
import android.util.AttributeSet;
|
||||
import android.util.PathParser;
|
||||
|
||||
import org.xmlpull.v1.XmlPullParser;
|
||||
import org.xmlpull.v1.XmlPullParserException;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
* Draws a filled {@link ShapeDrawable} using the path from {@link AdaptiveIconDrawable}.
|
||||
*/
|
||||
public class AdaptiveIconShapeDrawable extends ShapeDrawable {
|
||||
public AdaptiveIconShapeDrawable() {
|
||||
super();
|
||||
}
|
||||
|
||||
public AdaptiveIconShapeDrawable(Resources resources) {
|
||||
super();
|
||||
init(resources);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void inflate(Resources r, XmlPullParser parser, AttributeSet attrs, Theme theme)
|
||||
throws XmlPullParserException, IOException {
|
||||
super.inflate(r, parser, attrs, theme);
|
||||
init(r);
|
||||
}
|
||||
|
||||
private void init(Resources resources) {
|
||||
final float pathSize = AdaptiveIconDrawable.MASK_SIZE;
|
||||
final Path path = new Path(PathParser.createPathFromPathData(
|
||||
resources.getString(com.android.internal.R.string.config_icon_mask)));
|
||||
setShape(new PathShape(path, pathSize, pathSize));
|
||||
}
|
||||
}
|
||||
@@ -32,18 +32,19 @@ import android.util.Log;
|
||||
import androidx.annotation.VisibleForTesting;
|
||||
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.homepage.AdaptiveIconShapeDrawable;
|
||||
import com.android.settingslib.drawer.Tile;
|
||||
|
||||
public class RoundedHomepageIcon extends LayerDrawable {
|
||||
public class AdaptiveHomepageIcon extends LayerDrawable {
|
||||
|
||||
private static final String TAG = "RoundedHomepageIcon";
|
||||
private static final String TAG = "AdaptiveHomepageIcon";
|
||||
|
||||
@VisibleForTesting(otherwise = NONE)
|
||||
int mBackgroundColor = -1;
|
||||
|
||||
public RoundedHomepageIcon(Context context, Drawable foreground) {
|
||||
public AdaptiveHomepageIcon(Context context, Drawable foreground) {
|
||||
super(new Drawable[]{
|
||||
context.getDrawable(R.drawable.ic_homepage_generic_background),
|
||||
new AdaptiveIconShapeDrawable(context.getResources()),
|
||||
foreground
|
||||
});
|
||||
final int insetPx = context.getResources()
|
||||
Reference in New Issue
Block a user