icon android bitmap icons shortcut launcher

Atajo de Android icono del iniciador de mapa de bits de tamaño



android icon shortcuts (3)

Si nota en la carpeta de res de Android, debe haber varias carpetas dibujables

hdpi dibujables, mdpi dibujables, ldpi dibujables, etc. en cada carpeta tiene imágenes designadas para cada dispositivo, porque cada dispositivo muestra imágenes de acuerdo con la densidad de la pantalla, algunos dispositivos tienen baja densidad y algunos tienen alta densidad

por eso, en un dispositivo, el tamaño de su icono es de 96 px, y en otro, 72

los dispositivos más viejos y más pequeños son incluso 48 y 36

para solucionar el problema, solo tiene que rellenar las carpetas dibujables apropiadas, con el archivo de icono de tamaño correcto, y luego no tendrá un problema

para obtener más información, lea esto: Soporte de pantallas múltiples en Android

Tengo problemas para encontrar el tamaño correcto del icono del iniciador para mi acceso directo.

En mi Nexus 7.2, el valor de android.R.dimen.app_icon_size (ver código) es de 96 píxeles. Pero si mido el tamaño del icono real de otras aplicaciones en una captura de pantalla de mi pantalla de inicio, es de 120 píxeles. Después de crear un shortshut, es más pequeño (96 px) que todos los demás íconos de la aplicación (120px)

En mi Samsung Galaxy SII android.R.dimen.app_icon_size es 72. Y esta coincidencia con mi medida de captura de pantalla.

Aquí el resultado de

DisplayMetrics metrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metrics);

Nexus 7.2:

android.R.dimen.app_icon_size = 96 metrics.dip = 192 metrics.density = 2.0 metrics.densityDpi = 320 metrics.heightPixels = 1824 metrics.scaledDensity = 2.0 metrics.widthPixels = 1200 metrics.xdpi = 320.842 metrics.ydpi = 322.966

Samsung SII:

android.R.dimen.app_icon_size = 72 metrics.dip = 108 metrics.density = 1.5 metrics.densityDpi = 240 metrics.heightPixels = 800 metrics.scaledDensity = 1.5 metrics.widthPixels = 480 metrics.xdpi = 217.71428 metrics.ydpi = 218.49463

Aquí mi código:

// Calculate launcher icon size int size = (int) getResources().getDimension(android.R.dimen.app_icon_size); int width = size; int height = size; // Create launcher icon bitmap Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(bitmap); // Inflate layout to bitmap LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); LinearLayout layout = (LinearLayout) inflater.inflate(R.layout.shortcut, null, false); // here I edit layout, change ImageView and TextView etc... layout.setDrawingCacheEnabled(true); layout.measure(MeasureSpec.makeMeasureSpec(width, MeasureSpec.EXACTLY), MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY)); layout.layout(0, 0, layout.getMeasuredWidth(), layout.getMeasuredHeight()); canvas.drawBitmap(layout.getDrawingCache(), 0, 0, new Paint()); // Create SendFax intent Intent shortcutIntent = new Intent(); shortcutIntent.setClass(context, SendFax.class); shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK); // Create shortcut intent Intent intent = new Intent(); intent.putExtra(Intent.EXTRA_SHORTCUT_ICON, bitmap); intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent); intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, description); setResult(RESULT_OK, intent); finish();


He encontrado una solución de trabajo:

@TargetApi(Build.VERSION_CODES.HONEYCOMB) private int launcherLargeIconSize() { ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); return activityManager.getLauncherLargeIconSize(); } int size1 = (int) getResources().getDimension(android.R.dimen.app_icon_size); int size2 = Build.VERSION.SDK_INT >= 11 ? launcherLargeIconSize() : 0; int size = size2 > size1 ? size2 : size1;


Obtener el tamaño correcto de un icono de iniciador parece no ser tan directo como cabría esperar. Sé que, al menos, las tabletas van a una carpeta en la carpeta de los dibujos para mostrar los íconos más grandes que los esperados por la densidad de la pantalla.

Aquí hay un poco más de discusión