我们最近已根据需要将应用程序更新为Android X,方法是转到“重构”>“迁移到Android Studio中的Android X”。大多数事情似乎都运行良好,但是我们在菜单和按钮上都遇到了图像尺寸问题。
例如:
getMenuInflater().inflate(R.menu.top_menu, menu);
displayPhotos = menu.getItem(0);
displayPhotos.setIcon(
Util.resize(
ResourcesCompat.getDrawable( getResources() , R.drawable.bb_photos_off, null)
,this,22,22
)
);
定义的调整大小功能如下:
public static Drawable resize(Drawable image,Context c, int width, int height) {
int iconWidth = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, width, c.getResources().getDisplayMetrics());
int iconHeight = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, height, c.getResources().getDisplayMetrics());
Bitmap b = ((BitmapDrawable)image).getBitmap();
Bitmap bitmapResized = Bitmap.createScaledBitmap(b, iconWidth,iconHeight, false);
return new BitmapDrawable(c.getResources(),bitmapResized);
}
调整大小功能应为手机的像素密度创建正确大小的图像,以避免我们准备多种尺寸的图像。
在迁移之前,在运行API 28的仿真器上,图像看起来很完美。之后,它们的大小大约是原来的两倍。
我们在Android X迁移中缺少任何可能导致此问题的东西吗?