Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 迁移到AndroidX时的菜单图标大小_Java_Android_Androidx - Fatal编程技术网

Java 迁移到AndroidX时的菜单图标大小

Java 迁移到AndroidX时的菜单图标大小,java,android,androidx,Java,Android,Androidx,我们最近根据需要将应用程序更新到Android X,在Android Studio中进入重构>迁移到Android X。大多数东西似乎都工作得很好,但我们在菜单和按钮中都遇到了图像大小的问题 例如: getMenuInflater().inflate(R.menu.top_menu, menu); displayPhotos = menu.getItem(0); displayPhotos.setIcon( Util.resize( ResourcesCompat.get

我们最近根据需要将应用程序更新到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迁移过程中,我们是否遗漏了任何可能导致此问题的东西