我想要实现的目标
与屏幕宽度匹配的布局,具有9个补丁背景,其大小调整(仅水平,因为总是有足够的垂直空间).这是一个虚拟图像:
我的目标是,根据屏幕分辨率,使用一组不同的尺寸,例如,以尽可能高的分辨率显示图像. 320×45,480×67,600×87,720×101,无需任何缩小.我希望有一个非程序化的解决方案.
具有上述图像尺寸的示例将是:
> 3.7“Nexus One(480 x 800) – 480×67图像效果最佳.
> 4.7“galaxy Nexus(720 x 1280) – 720×101图像.
> 4.7“Nexus 4(768 x 1280) – 再次是720×101图像,拉伸到完整的768像素宽度,变成768×101.
问题
整个AndroID资源分配围绕dps(与密度无关的像素),实际上我想根据实际可用像素显示图像.
如果我将480×67图像分配给res / drawable-mdpi,将600×87分配给res / drawable-hdpi,则图像将在5.4″ display of 480×800上正确显示,即mdpi显示.但是,4“480×800显示器符合hdpi标准,系统将指定600×87 image,which won’t fit the screen.
我尝试了in the online guide所述的smallestWIDth参数,但这会产生奇怪的结果.例如,一个3.7“480 x 800显示器(hdpi)使用我的drawable-sw320dp图像,尽管有一个drawable-sw480dp资源也可用.
分配具有最佳质量的可拉伸宽度匹配图像的最佳方法是什么?是不是有任何非程序化的解决方案?
提前致谢!
解决方法 我相信通过组合密度和屏幕大小资源限定符,您可以实现接近最佳行为.让我们假设这种资源文件夹结构:
> drawable-normal-hdpi – 正常大小决定了最小宽度
320dp. hdpi指示1.5X dp到像素乘数.所以最小px
正常hdpi桶的宽度是480px.我们这里放了480px宽
图片.
> drawable-normal-xhdpi – 再次大小规定320dp,但这一次
使用2倍乘数.所以我们使用640px宽的图像.
> drawable-xlarge-mdpi – 大小意味着至少720dp. mdpi乘数
是1X,所以我们使用720px宽的图像.
现在让我们看看一些设备,看看它们是如何落入这些存储桶的:
> Nexus one – 正常的hdpi.实际px宽度:480px.图像适合
完美.
> galaxy nexus – 正常的xhdpi.我们可以适合720px的图像,所以
我们使用的640px图像并不是最佳的 – 但它非常接近.
> Nexus 4就像Gnex一样.
> Nexus 10.1(1280X800) – xlarge mdpi.我们可以适合800px,我们的形象
是720px.再次不理想但足够接近.
最糟糕的情况:使用的图像质量可提高5-10%.
最佳表壳:完美贴合.
这种方法的主要缺点是你需要提供大量的资源和文件夹来考虑大小和密度的所有排列(如果你需要将它与更多的限定符结合用于区域设置,方向等,则更糟糕).但是,就我的AndroID理解而言,我不认为你可以在没有编码的情况下取得比这更好的东西.
关于smallestWIDth的评论:你的奇怪行为的例子实际上是预期的行为.hdpi乘数为1.5 – 因此480px宽的hdpi显示器正好是320dp宽.这使得drawable-sw320dp成为正确的选择,如文档所述.我不确定你是否可以将smallestWIDth限定符与dpi限定符组合使用.如果可能的话,您可能会获得比仅仅大小修饰符更准确的结果.但这意味着图像质量提高5%会产生更多的排列.可能不值得.
总结以上是内存溢出为你收集整理的android – 基于分辨率/密度从资源中获得最佳质量的图像分配全部内容,希望文章能够帮你解决android – 基于分辨率/密度从资源中获得最佳质量的图像分配所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)