android - 缩放ImageView

时间:2016-07-19 21:28:35

标签: android

我正在尝试做一个启动器,我发现了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问题,我必须改变的一切都在图标接收阶段。

1 个答案:

答案 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提供。