2016-07-19 61 views
0

我正在嘗試做一個啓動程序,我發現顯示應用程序的ListView有問題,因爲一些應用程序有更大的圖標和其他一些較小的圖標。 因此,我需要您的幫助來調整ListView活動中圖標的大小。 有代碼:android-scaling ImageView

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

查看ImageView到'android:scaleType =「fitXY」' –

回答

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