我在开发平板电脑7英寸的Kindle Fire HD和Nexus 7的应用程序。 这两个应用程序是相同的尺寸和相同的屏幕分辨率。 不过,我跑我的应用程序,这是非常不同的。 为什么?
看来这是因为Nexus 7的检测为TVDPI,而Kindle Fire的HD是华电国际。 如何有基于模型1280 * 800相同的渲染?
谢谢
我在开发平板电脑7英寸的Kindle Fire HD和Nexus 7的应用程序。 这两个应用程序是相同的尺寸和相同的屏幕分辨率。 不过,我跑我的应用程序,这是非常不同的。 为什么?
看来这是因为Nexus 7的检测为TVDPI,而Kindle Fire的HD是华电国际。 如何有基于模型1280 * 800相同的渲染?
谢谢
嗯,看来你已经发现了为什么两个有分歧,那是因为他们的报告不同密度的比例因子:
那么,为什么他们的报告不同,当他们在技术上具有相同的物理尺寸和分辨率?
实际存在的核心问题,因为一个设备是谷歌播放设备(的Nexus),另一种是不(点燃)。 所有具有谷歌播放(和其他谷歌应用程序)的Android设备只能通过传递一些所谓的兼容性测试套件(CTS),这证实了这样一个设置符合他们所提出的标准,这样做。 标准本身都记录在每个释放兼容性定义文档(CDD)。 下面是对CDD的链接为Android 4.0 (7.1节与屏幕大小和密度的交易)。 该CDD告诉设备制造商,他们应该报告的比例因子是数值最接近屏幕的实际DPI,这实际上是TVDPI在这种情况下。
亚马逊设备不使用任何谷歌的应用程序,包括谷歌播放。 虽然它可能是在遵循相同的标准,他们的最佳利益,他们不会受其约束,并经常不遵守。 TVDPI那种偷偷了大家,当它出现了对的Nexus 7,但如果他们在设计过程中所引用的CDD亚马逊会知道这件事。
这如何使他们不同的表现?
的差异不是在你的布局选择。 显然,从你的截图,你希望他们两个器件都拿起适当的布局。 改变sw
上的布局目录值仅影响该设备将选择布局...它不会改变的事情怎么会规模事情。 不要打扰试图把自己的布局密度的特定目录...布局应该是灵活的。
相反,问题在于与密度无关的像素单元(即浸或DP),例如文本大小,则可能已创建的任何固定视图的大小,且可拉伸的尺寸做出的任何尺寸或大小计算。
因为这两种设备都选择不同规模的资产,你用你的“DP”定义任何可绘制资源或任何值将导致一个小的变化。 我给大家举两个例子:
您可以定义文本大小为TextView
是16dp
。 在的Nexus 7,这将在21px绘制文本。 Kindle Fire的HD会得出相同的文本在24px的。 所不同的是小...但它的存在。
这同样适用于绘制的图像真实。 如果你只在限定的图像drawable-mdpi
在48x48的和相同的图像drawable-hdpi
在最高72x72,Kindle的有72px图像直接使用,和Nexus将创建一个规模64PX图像,所以有8个像素的差别在两种资产之间。
我能做些什么使这两个看起来更加相似?
在大多数情况下,我会说你不应该。 通常情况下,缩放做,除非布局的限制设置了太多的硬编码的大小不会在很大程度上影响申请的结果。
但是,一般如果有需要专门为此更改用户界面的一部分,该解决方案是定义特定的资源和尺寸的-tvdpi
,你觉得他们需要的(再次情况下,我不会推荐比例一切都在你的应用程序,以满足这种情况下)。
对于有文本或视图大小,这意味着你可能需要一个values-tvdpi/dimensions.xml
文件和缺省values/dimensions.xml
文件。 使用上面的例子,你可以定义默认的文本大小16DP,但在-tvdpi
位置,确定尺寸相同18dp。 这将导致两个设备缩放最后文本高达24px的。 在你的代码,在使用的实际尺寸,其引用为@dimen/myTextSize
而不是16dp
直接。
对于绘制的项目,添加一个drawable-tvdpi
目录和扩展这些资产,以配合你是怎么想的,他们应该吸取的设备一样的Nexus 7再次与我们前面的例子,相同的图像文件从复制drawable-hdpi
文件夹到drawable-tvdpi
文件夹,以便两个设备将在72px绘制同一图像。
为了避免在多个地方复制同样的资产,你也可以用别名做到这一点。 把图像本身为drawable/
有一个特殊的名字,并使用values-tvdpi/drawables.xml
和values-hdpi/drawables.xml
引用单一资产在两个地方。 有关别名的详细信息, 请参阅本文档 。 所述实施例是出于布局,但相同的范例,通过改变以适用于可绘(或任何资源) type="drawable"
。
因为Nexus7是它使用了布局sw600dp资产tvdpi设备(基于在213dpi的计算)时,FireHD是HDPI装置和使用(基于240dpi计算)布局sw533dp资产最终
也许你应该使用布局tvdpi和布局,华电国际?