Android中480x800 hdpi和480x800 mdpi的区别

4
我正在安卓模拟器上测试我的应用程序。在一个屏幕上,我有一个横幅广告。广告的尺寸为320x50。
当我启动分辨率为480x800和240dpi(hdpi)的模拟器时,横幅广告占据了整个屏幕宽度。
当我启动具有相同分辨率但160dpi(mdpi)的模拟器时,横幅广告仅占据了部分屏幕,正如我所预期的那样(广告占据了480像素中的320像素)。
我不明白为什么480x800的设备似乎只有320dp的屏幕宽度?根据我的理解,在480像素宽的设备上显示320像素宽的图像肯定会在两侧留下一些空间。我不明白dpi如何影响任何内容,因为分辨率是相同的。我相信更高的dpi只会意味着物理设备将拥有更小的屏幕。

当你说广告的尺寸为320x50时,你是指dp还是px?你是如何创建横幅广告的?它是基于可绘制项创建的吗?如果是,可绘制项在哪个文件夹中(drawable/drawable-mdpi/drawable-hdpi等)? - Sam Dozor
广告尺寸使用wrap_content指定,内容由AdMob提供。 AdMob指定他们的横幅广告为320x50,我相当确定他们已经采取措施确保广告不会以任何方式被改变(拉伸、缩小等)。 - Roger Cuthbert
1个回答

9
在HDPI的480x800设备上,屏幕宽度为320dp。正如Google文档所说,“在240 dpi屏幕上,1 dp等于1.5个物理像素”。这意味着在HDPI屏幕上指定为320dp的资源将显示为320*1.5=480像素。
在mdpi(160dpi)的情况下,我认为dp和px是1:1,因此320dp宽的资源将显示为320*1=320像素。请注意,拥有480px宽度的mdpi设备非常罕见,那种屏幕看起来会很大且像素化。

啊,这样有点清楚了。我原来以为所有dpi的比例都是1:1。 - Roger Cuthbert

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接