我不是一个Android开发人员,我试图了解他们在图形资源方面需要什么,以使应用程序在许多Android设备上运行。
我(尝试)阅读此页面http://developer.android.com/guide/practices/screens_support.html,但发现它有点令人困惑。他们谈论屏幕密度是重要的“为不同的屏幕密度提供替代位图可绘制”但是,如果你不知道屏幕的大小,你不能真正考虑布局。想要在所有屏幕上制作具有相同密度的相同尺寸的按钮和徽标,以便在大屏幕上只有一堆空间,而在小屏幕上它们全部紧凑?我不明白如何只考虑像素密度让我更接近知道提供什么。
你应该为每个屏幕尺寸和像素密度创建资源吗?这么说吧。
无论如何,有人可以告诉我......如果你正在开发一个应用程序你需要什么图形?是否有可能提供大型图形并让它们缩小?是不是不可避免的是,devloper无论如何都要自己弄乱图形?或者他可以提供一组可以随时使用的某些尺寸的png文件吗?
谢谢!
答案 0 :(得分:0)
以下是我们在工作场所所做的事情。假设我们得到了应用程序的设计。我们让设计师为相同的设计创建3 psds版本。 3 psd是针对3个范围的desnity。用于psd的大小是
240 * 320(低密度)
320 * 480(中等密度)
480 * 800(高密度)
大多数情况下,当我编写布局时,我使用wrap_content,这意味着视图必须采用它包装的内容的大小。大部分时间都有效,因为我有一个密度特定的设计版本,所以我用作背景的图像应该是合适的。需要注意的是,在android中,您可以将同一图像的3种尺寸放在不同的文件夹中,例如drawable / ldpi,drawable / hdpi。
例如:你有一个bg.png,有一个适用于大型手机的版本和一个适用于小型手机的版本。你将big bg.png放入hdpi文件夹和ldpi文件夹中的小png。 Android会根据手机密度自动选择合适的图像。但您需要确保文件名相同。
在某些情况下,您需要调整背景图像的大小,而不会使图像看起来过于缩放。对于这个Android使用draw9patch工具。使用此工具,您可以指定可以缩放的区域和不应缩放的区域。
答案 1 :(得分:0)
9 Patch png是你的朋友。在这里阅读它们:
http://developer.android.com/guide/topics/resources/drawable-resource.html#NinePatch
在这里:
http://developer.android.com/guide/developing/tools/draw9patch.html
对于任何类型的图形来说,这是你最好的选择(即不是渐变,它们会在某些屏幕上略微出现像素化)这些类型的图像的力量是你可以告诉系统哪些像素到如果需要拉伸图形,请重复。这意味着可以在不损失图像质量的情况下完成拉伸(同样取决于您的图像以及您如何选择制作九个补丁.draw9补丁程序中的“显示错误补丁”按钮将显示潜在问题。提示:保持可重复性左边的像素和左边的1个像素,你可以看到不好的补丁问题。任何可以制作成9个补丁的图形只需要1个尺寸,因为系统可以有效地制作它所需的任何尺寸。
你应该为每个屏幕大小和像素密度创建资源吗?
如果你愿意,也可以。这将确保应用程序在所有设备上看起来都很棒。据我所知,这对所有项目都不可行。一般情况下,如果您为不同的密度制作单独的资源,您将获得在大多数设备上看起来可接受的内容。所有设备都被分类为ldpi,mdpi或hdpi(现在也可能有“超高”级别,我不确定是否在我的头顶)所以如果你为这3个密度提供图形,那么系统将知道设备落在哪里并将拉出正确的图形。
是否可以提供较大的图形并让它们缩小?
是的,如果需要,系统会缩小你的图形。但要注意这种方法会产生后果。首先,每当系统向上或向下扩展图形时,它都会占用CPU和内存来执行此操作。如果您只有相对较少的东西可以扩展,这可能不是问题,但如果您有很多东西,它可能会导致较低功率手机上的显着延迟时间。其次,据我所知,android中的所有图形都是光栅,这意味着如果你让系统向上或向下扩展某些图像质量会降低一些。同样取决于特定的图像,这可能在运行时在实际设备上或多或少地显而易见。
我最好的建议是为他们提供几种不同大小的资源,并在尽可能多的不同设备上运行应用程序。一旦您了解不同资源在不同尺寸的设备上的外观,您就可以更好地了解需要提供哪些资源,以便在最大的屏幕尺寸和密度范围内尽可能保持用户界面的一致性。