【问题标题】:Some generated Icons appear larger than the normal icon一些生成的图标看起来比正常图标大
【发布时间】:2016-06-01 02:02:59
【问题描述】:

我目前正在制作我设备上安装的所有应用程序的列表,但由于某种原因,某些图标看起来比通常的图标大。 如何定义图标的最大尺寸?

这是我用来获取图标的代码

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);

【问题讨论】:

    标签: java android icons package-managers


    【解决方案1】:
        PackageManager pm = context.getApplicationContext().getPackageManager();
        PackageInfo pi = pm.getPackageInfo(packageName, 0);
        String title=pi.applicationInfo.loadLabel(pm).toString();
        Drawable icon== pi.applicationInfo.loadIcon(pm))
    

    否则,我假设您使用的是列表视图。设置 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;
        }
    

    【讨论】:

      猜你喜欢
      • 2023-04-06
      • 2014-08-25
      • 1970-01-01
      • 2020-10-03
      • 1970-01-01
      • 1970-01-01
      • 2021-05-14
      • 1970-01-01
      • 2014-04-24
      相关资源
      最近更新 更多