Android屏幕大小不一致

Android屏幕大小不一致,android,android-studio,screen,Android,Android Studio,Screen,如图所示: 我有一个大小为1082 x 1796的圆形矩形,我使用getWindowManager().getDefaultDisplay()获取并打印屏幕的像素值,如左下方的圆圈所示。但是,当我绘制此位图时,会发生以下情况: 屏幕大小是否与getDefaultDisplay()方法不同?如何修复此问题?我认为系统会将您的形状视为一个补丁。它使用第一行和最后一行/列,以便知道如何调整图像大小,以便一致地显示图像 这就是为什么宽度和高度相差2倍。我认为可以通过修改png并删除第一行和最后一行/

如图所示:

我有一个大小为1082 x 1796的圆形矩形,我使用
getWindowManager().getDefaultDisplay()
获取并打印屏幕的像素值,如左下方的圆圈所示。但是,当我绘制此位图时,会发生以下情况:


屏幕大小是否与getDefaultDisplay()方法不同?如何修复此问题?

我认为系统会将您的形状视为一个补丁。它使用第一行和最后一行/列,以便知道如何调整图像大小,以便一致地显示图像


这就是为什么宽度和高度相差2倍。我认为可以通过修改png并删除第一行和最后一行/列来纠正它,或者使用另一种方法来绘制图像。也许使用另一种格式(jpg?bmp?)的图像可以完成这项工作。我不确定。

您可以根据设备屏幕的宽度和高度计算适合所有屏幕设备:

DisplayMetrics dm = new DisplayMetrics();
                       ((Activity) context).getWindowManager().getDefaultDisplay().getMetrics(dm);

int width = dm.widthPixels;
int height = width * imageHeight / imageWidth;

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(width, height);