我正在尝试做一个启动器,我发现了ListView显示应用程序的问题,因为有些应用程序有更大的图标,有些则更小。 所以,我需要你的帮助来调整ListView活动中的图标大小。 有代码:
private PackageManager manager;
private List<AppDetail> apps;
public void loadApps(){
manager = getPackageManager();
apps = new ArrayList<AppDetail>();
Intent i = new Intent (Intent.ACTION_MAIN, null);
i.addCategory(Intent.CATEGORY_LAUNCHER);
List<ResolveInfo> aviableActivities = manager.queryIntentActivities(i, 0);
for(ResolveInfo ri:aviableActivities) {
AppDetail app = new AppDetail();
app.label = ri.loadLabel(manager);
app.name = ri.activityInfo.packageName;
app.icon = ri.activityInfo.loadIcon(manager);
apps.add(app);
}
}
这不是XML问题,我必须改变的一切都在图标接收阶段。
答案 0 :(得分:0)
这是我在某个时间工作的项目。您可以将图像作为位图加载,调整大小,然后将其设置为ImageView
public static Bitmap resizeBitmap(Bitmap bm, int newWidth, int newHeight) {
int width = bm.getWidth();
int height = bm.getHeight();
float scaleWidth = ((float) newWidth) / width;
float scaleHeight = ((float) newHeight) / height;
// CREATE A MATRIX FOR THE MANIPULATION
Matrix matrix = new Matrix();
// RESIZE THE BIT MAP
matrix.postScale(scaleWidth, scaleHeight);
// "RECREATE" THE NEW BITMAP
Bitmap resizedBitmap = Bitmap.createBitmap(
bm, 0, 0, width, height, matrix, false);
bm.recycle();
return resizedBitmap;
}
但是在你这样做之前,我强烈建议你缩小输入图像的采样(你可能可以用较低的图像分辨率),或者你可能正在处理使用大量内存的图像并很快遇到OutOfMemoryError。此代码由Google提供。