scale listView icons of shareActivity to the same size
This commit is contained in:
parent
aab1616df0
commit
bfc0824014
@ -9,6 +9,7 @@ import android.content.pm.PackageManager;
|
|||||||
import android.content.pm.ResolveInfo;
|
import android.content.pm.ResolveInfo;
|
||||||
import android.graphics.drawable.Drawable;
|
import android.graphics.drawable.Drawable;
|
||||||
import android.util.AttributeSet;
|
import android.util.AttributeSet;
|
||||||
|
import android.util.DisplayMetrics;
|
||||||
import android.util.Pair;
|
import android.util.Pair;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
@ -37,6 +38,10 @@ public class IntentListView extends ListView {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private class IntentAdapter extends ArrayAdapter<ResolveInfo> {
|
private class IntentAdapter extends ArrayAdapter<ResolveInfo> {
|
||||||
|
|
||||||
|
// actually the mdpi pixel size is 48, but this ugly...so scale icons down for listView
|
||||||
|
private static final int MDPI_PX = 36;
|
||||||
|
|
||||||
private IntentAdapter() {
|
private IntentAdapter() {
|
||||||
super(IntentListView.this.getContext(), android.R.layout.simple_list_item_1);
|
super(IntentListView.this.getContext(), android.R.layout.simple_list_item_1);
|
||||||
}
|
}
|
||||||
@ -48,11 +53,19 @@ public class IntentListView extends ListView {
|
|||||||
|
|
||||||
ActivityInfo info = getItem(position).activityInfo;
|
ActivityInfo info = getItem(position).activityInfo;
|
||||||
CharSequence label = info.loadLabel(mPackageManager);
|
CharSequence label = info.loadLabel(mPackageManager);
|
||||||
|
|
||||||
|
// get icon and scale it manually to ensure that all have the same size
|
||||||
Drawable icon = info.loadIcon(mPackageManager);
|
Drawable icon = info.loadIcon(mPackageManager);
|
||||||
|
DisplayMetrics dm = new DisplayMetrics();
|
||||||
|
((Activity) getContext()).getWindowManager().getDefaultDisplay().getMetrics(dm);
|
||||||
|
float densityScale = dm.density;
|
||||||
|
float scaledWidth = MDPI_PX * densityScale;
|
||||||
|
float scaledHeight = MDPI_PX * densityScale;
|
||||||
|
icon.setBounds(0,0,Math.round(scaledWidth),Math.round(scaledHeight));
|
||||||
|
|
||||||
view.setText(label);
|
view.setText(label);
|
||||||
view.setCompoundDrawablePadding((int) getResources().getDimension(R.dimen.icon_margin));
|
view.setCompoundDrawablePadding((int) getResources().getDimension(R.dimen.icon_margin));
|
||||||
view.setCompoundDrawablesWithIntrinsicBounds(icon, null, null, null);
|
view.setCompoundDrawables(icon, null, null, null);
|
||||||
|
|
||||||
return view;
|
return view;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user