, eğer biz, bu ise, uygulama ikonu almak için AppIconHelperV26 sınıfını çağırabilirsiniz (26> =) Android O destekleyen cihaz için
public class AppIconHelper {
public static Bitmap getAppIcon(PackageManager mPackageManager, String packageName) {
if (Build.VERSION.SDK_INT >= 26) {
return AppIconHelperV26.getAppIcon(mPackageManager, packageName);
}
try {
Drawable drawable = mPackageManager.getApplicationIcon(packageName);
return ((BitmapDrawable) drawable).getBitmap();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
AppIconHelper.java onun çizilebilir AdaptiveIconDrawable, biz 1. Ön plan ve arka plan çizilebilir alın ve drawable Katman olarak oluşturmak biz Katman çekilebilir dönüştürebilirsiniz Tuval kullanma 2. Bitmap aşağıdaki adımları yapıyoruz
AppIconHelperV26.java
Şimdi
public class AppIconHelperV26 {
@RequiresApi(api = Build.VERSION_CODES.O)
public static Bitmap getAppIcon(PackageManager mPackageManager, String packageName) {
try {
Drawable drawable = mPackageManager.getApplicationIcon(packageName);
if (drawable instanceof BitmapDrawable) {
return ((BitmapDrawable) drawable).getBitmap();
} else if (drawable instanceof AdaptiveIconDrawable) {
Drawable backgroundDr = ((AdaptiveIconDrawable) drawable).getBackground();
Drawable foregroundDr = ((AdaptiveIconDrawable) drawable).getForeground();
Drawable[] drr = new Drawable[2];
drr[0] = backgroundDr;
drr[1] = foregroundDr;
LayerDrawable layerDrawable = new LayerDrawable(drr);
int width = layerDrawable.getIntrinsicWidth();
int height = layerDrawable.getIntrinsicHeight();
Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
layerDrawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
layerDrawable.draw(canvas);
return bitmap;
}
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
return null;
}
}
Bitmap'i almak için AppIconHelper.getAppIcon çağırabilir,
AppListAdapter.java
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
//... your code here
Bitmap appIcon = AppIconHelper.getAppIcon(packageManager, packageName);
imageView.setImageBitmap(appIcon);
}
Bu, 'LayerDrawable' rigmarole'a gitmekten daha iyi bir yanıt gibi görünüyor. Ayrıca, "(BitmapDrawable çekilebilir instanceof) {return ((BitmapDrawable) çekilebilir) .getBitmap(); Ortak durumda en iyi duruma getirmek için fonksiyonun üst kısmına. –