Android getDisplayMetrics()返回不正确的密度和屏幕大小

Android getDisplayMetrics()返回不正确的密度和屏幕大小,android,Android,我正在写一个应用程序,它使用一个大的ish(1024x1024)位图。我注意到在渲染时性能会显著下降,因此我想计算其ImageView的精确大小(以像素为单位),以便位图可以缩放一次,而不是在每个帧上进行内部缩放(我假设当前正在发生这种情况-探查器告诉我内部绘制()当图像显示在屏幕上时,仅此功能就需要约30毫秒) 但是,我不确定如何确保我的图像不会在内部缩放,因为显示管理器的分辨率和密度已完全关闭 getWindowManager().getDefaultDisplay().getRealMet

我正在写一个应用程序,它使用一个大的ish(1024x1024)位图。我注意到在渲染时性能会显著下降,因此我想计算其ImageView的精确大小(以像素为单位),以便位图可以缩放一次,而不是在每个帧上进行内部缩放(我假设当前正在发生这种情况-探查器告诉我内部绘制()当图像显示在屏幕上时,仅此功能就需要约30毫秒)

但是,我不确定如何确保我的图像不会在内部缩放,因为显示管理器的分辨率和密度已完全关闭

getWindowManager().getDefaultDisplay().getRealMetrics()返回

getWindowManager().getDefaultDisplay().getMetrics()返回

而getResources().getDisplayMetrics()返回

问题是,所有布局计算(包括px单元)都基于后两者,而不是前者。这是在我的电脑上运行的


我假设我的
AndroidManifest.xml
activity\u main.xml

确保在
AndroidManifest.xml
中直接在
manifest
部分中设置SDK版本,例如

<uses-sdk
  android:minSdkVersion="15"
  android:targetSdkVersion="28"
/>

当我试图让硬件加速工作时,我发现它与窗口管理器绑定在一起

发件人:

如果目标API级别>=14,则默认情况下启用硬件加速,但也可以显式启用


确保在
manifest
部分的
AndroidManifest.xml
中直接设置SDK版本,例如

<uses-sdk
  android:minSdkVersion="15"
  android:targetSdkVersion="28"
/>

当我试图让硬件加速工作时,我发现它与窗口管理器绑定在一起

发件人:

如果目标API级别>=14,则默认情况下启用硬件加速,但也可以显式启用

density=1.00000, densityDpi=160, heightPixels=175, scaledDensity=1.00000, widthPixels=107, xdpi=147.484, ydpi=147.782
<uses-sdk
  android:minSdkVersion="15"
  android:targetSdkVersion="28"
/>