Android中的values-sw资源问题

时间:2015-12-27 06:57:41

标签: android android-layout android-resources

我有两个设备:

  1. Moto-G first generation (720*1280, 4.5" 324.2 PPI)
  2. ICE Tablet (600*1024 7" 169.55 PPI)
  3. "values-sw420dp-xhdpi"创建了文件夹"values-xhdpi"Moto-G,为"values-sw360dp-mdpi"创建了文件夹ICE Tablet。但是这两个设备都从"values-sw360dp-mdpi"文件夹中获取值。

    我对设备的这种行为非常困惑,因为两者都完全不同,但为什么会发生这种情况呢?

    有人可以指导我如何为这两个设备定义sw文件夹,一般来说sw是如何工作的?我阅读了sw文件夹的官方指南并支持多个屏幕,但没有确切的想法。

1 个答案:

答案 0 :(得分:1)

根据您的问题,让我引用Android开发者指南中的一个片段:

  

屏幕配置:smallestWidth

     

限定符值: swdp

     

示例: sw600dp sw720dp

     

屏幕的基本尺寸,如最短的指示   可用屏幕区域的尺寸。具体来说,设备的   smallestWidth是屏幕可用高度最短的   宽度(您也可以将其视为“最小可能宽度”)   屏幕)。您可以使用此限定符来确保无论如何   屏幕的当前方向,您的应用程序至少<N>   宽度的dps可用于其UI。

     

例如,如果您的布局要求其最小尺寸为   屏幕区域始终至少600 dp,然后你可以使用它   限定符来创建布局资源res/layout-sw600dp/。该   系统将仅在最小维度时使用这些资源   可用屏幕至少600dp,无论是否600dp   side是用户感知的高度或宽度。最小宽度是a   固定屏幕尺寸特征的设备; 设备的   屏幕方向时smallestWidth不会改变   变化。

     

全文:Supporting Multiple Screens

就像@tiny说的那样:

  

sw420dp-xhdpi表示screenWidth = 840(420 * 2),

     

sw360dp-mdpi表示screenWidth = 360(360 * 1)

编辑:使用此网站http://pixeldensitycalculator.com/我已经计算了

  • Moto G 1st Edition的密度为293.72~320dpi
  • ICE Tablet的密度为169.55~160dpi

这些设备都没有超过320dpi,这就是为什么他们都没有使用你的420dpi文件夹。

希望有所帮助