2016-02-19 79 views
1

我目前正在製作安裝在我的設備上的所有應用程序的列表,但出於某種原因,某些圖標顯示爲比通常圖標大。 如何定義圖標的最大尺寸?一些生成的圖標顯示爲比正常圖標大

下面是我用得到的圖標

ImageView appIcon = holder.Icon; 
      Drawable icon = null; 
      try { 

       icon = getPackageManager().getApplicationIcon(apps.get(position).name.toString()); 
      } catch (PackageManager.NameNotFoundException e) { 
       Toast.makeText(getApplicationContext(), e.toString(), Toast.LENGTH_SHORT).show(); 
      } 

      appIcon.setImageDrawable(icon); 

回答

2
PackageManager pm = context.getApplicationContext().getPackageManager(); 
    PackageInfo pi = pm.getPackageInfo(packageName, 0); 
    String title=pi.applicationInfo.loadLabel(pm).toString(); 
    Drawable icon== pi.applicationInfo.loadIcon(pm)) 

否則代碼,我假設你正在使用一個ListView。設置imageview的寬度和高度。

<ImageView 
      android:id="@+id/stats_icon" 
      android:layout_width="40dp" 
      android:layout_height="40dp" 
      android:layout_gravity="center_vertical" 
      android:layout_marginRight="4dip" 
      android:layout_marginTop="2dip" 
      android:scaleType="fitCenter" /> 

private static Bitmap drawableToBitmap (Drawable drawable) { 
     Bitmap bitmap = null; 

     if (drawable instanceof BitmapDrawable) { 
      BitmapDrawable bitmapDrawable = (BitmapDrawable) drawable; 
      if(bitmapDrawable.getBitmap() != null) { 
       return bitmapDrawable.getBitmap(); 
      } 
     } 

     if(drawable.getIntrinsicWidth() <= 0 || drawable.getIntrinsicHeight() <= 0) { 
      bitmap = Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888); // Single color bitmap will be created of 1x1 pixel 
     } else { 
      bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888); 
     } 

     Canvas canvas = new Canvas(bitmap); 
     drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight()); 
     drawable.draw(canvas); 
     return bitmap; 
    } 
+1

我錯過了fitCenter,非常感謝! – HarrieDakpan