Android 使用dpi与dp缩放图像之间的差异

Android 使用dpi与dp缩放图像之间的差异,android,xml,layout,bitmap,dpi,Android,Xml,Layout,Bitmap,Dpi,我有所有的dpi可绘制目录(xxhdpi和xxxhdpi是否有必要?)。。。现在,我的问题是,我还创建了按大小(小、正常等)的“缩放”布局目录,其中我尝试手动更改按钮的dp,如下所示: 这是我的xhdpi位图: 。。。但在布局大目录中的Nexus 7虚拟仿真器(7.0“,1200X1920:xhdpi)上显示如下: …当我手动将其中一个按钮的dp大小更改为200时: ^^^顺便问一下,我的目录看起来怎么样?…为什么按钮看起来像这样^^^ 尽管如此,我还是不明白为什么我们需要基于密度的可绘制

我有所有的dpi可绘制目录(xxhdpi和xxxhdpi是否有必要?)。。。现在,我的问题是,我还创建了按大小(小、正常等)的“缩放”布局目录,其中我尝试手动更改按钮的dp,如下所示:

这是我的xhdpi位图:

。。。但在布局大目录中的Nexus 7虚拟仿真器(7.0“,1200X1920:xhdpi)上显示如下:

…当我手动将其中一个按钮的dp大小更改为200时:

^^^顺便问一下,我的目录看起来怎么样?…为什么按钮看起来像这样^^^


尽管如此,我还是不明白为什么我们需要基于密度的可绘制目录(mdpi、hdpi、xhdpi等)以及版面资源目录,而我们只需要根据屏幕大小(小、正常等)修改每个独特版面中图像的dp.

@dpark14我基本上已经回答了你昨天在这里的帖子中提出的问题:

  • 也许你应该编辑你的最后一个问题,把上面的代码和图片包括进来,这样它就可以合并了
  • 正如我在回答中所说(以及其他评论之一所说):
  • 如果您想更改imageButton的布局宽度和高度(以dp为单位),这完全取决于您。在不同屏幕的每个唯一布局资源文件中设置imageButton或任何UI元素的宽度和高度肯定没有错。您是否有想要获得反馈的特定代码

    现在,你已经包括了一些图像,我可以看到你的一些

    你真的应该看看这个:

    再次阅读Android文档将对您有所帮助:

    总结以下几点一般想法: 您不需要默认的可绘制文件夹,但应具有以下内容:

    • 可拉伸mdpi(中型)~160dpi
    • 可拉伸hdpi(高)~240dpi
    • 可拉伸xhdpi(超高)~320dpi
    • 可牵引xxhdpi(超高)~480dpi
    • 可牵引xxxhdpi(超高)~640dpi
    正如上面链接中的Android文档所述:

    当应用程序在不同密度的屏幕上显示时,它保留了用户界面元素的物理大小(从用户的角度来看),从而实现了“密度独立”

    而不是:

    如果由于某种原因(看起来你有问题),你已经实现了密度独立性,但是你的图像不适合,这时你可以开始改变w/h和res/layout

    我先前的回答也是:

    正如您提到的:您可以根据“最小值”为各种设备创建不同的res/dimens目录,例如w800dp/dimens.xml,然后在特定的dimens.xml中创建元素,例如values-w411/dimens.xml,用于宽度和高度,与您测试应用程序时不适合的图像相对应

    作为第一步,也许你应该尝试一下。是的,这需要时间,但首先尝试一个独立于你的应用程序的测试。只需添加一个映像(可能是你遇到问题的映像)。看看当你在模拟器中将其加载到不同的Nexus设备时会发生什么。映像是否实现了“密度独立性”“也就是说,保留设备的物理大小?如果是这样,并且它的w/h与特定设备的限制有关,正如我在前面的回答中所说,现在在这里,为问题设备创建一个dimens目录(在values-…目录中),并更改该特定图像或视图的布局宽度/布局高度


    有关特定设备w/h的更多信息:

    我们需要两者,因为不同的用例在不同的解决方案中具有最佳效果。这并不意味着每个应用程序都需要两者,或者每个应用程序都需要对所有图像使用相同的方法-使用最适合您的uiOk,因此考虑到计划A,那么drawable默认文件夹中真正属于什么?只有XML可绘制资源文件,对吗?