Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/189.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Appwidget大小计算_Android_Android 4.0 Ice Cream Sandwich_Android 3.0 Honeycomb_Android Appwidget_Android 2.3 Gingerbread - Fatal编程技术网

Android Appwidget大小计算

Android Appwidget大小计算,android,android-4.0-ice-cream-sandwich,android-3.0-honeycomb,android-appwidget,android-2.3-gingerbread,Android,Android 4.0 Ice Cream Sandwich,Android 3.0 Honeycomb,Android Appwidget,Android 2.3 Gingerbread,可能是我,但当我根据android页面上给出的公式计算应用程序小部件的最小尺寸时,我没有得到正确的小部件宽度;公式如下: 宽度(n)=(70 x n)-30 当我想要一个5x1小部件时,正确的宽度应该是(5*70)-30=320dp。然而,当在摩托罗拉Xoom上测试时,它被分解为4x1小部件。我已经测试了不同的值,400dp似乎适用于带有蜂巢的摩托罗拉xoom的5x1,但随后我会在带有姜饼的常规Galaxy标签上测试它,然后它会解析为6x1(就像人们所期望的那样) 这里有两个问题 姜饼和蜂巢有

可能是我,但当我根据android页面上给出的公式计算应用程序小部件的最小尺寸时,我没有得到正确的小部件宽度;公式如下:

宽度(n)=(70 x n)-30

当我想要一个5x1小部件时,正确的宽度应该是(5*70)-30=320dp。然而,当在摩托罗拉Xoom上测试时,它被分解为4x1小部件。我已经测试了不同的值,400dp似乎适用于带有蜂巢的摩托罗拉xoom的5x1,但随后我会在带有姜饼的常规Galaxy标签上测试它,然后它会解析为6x1(就像人们所期望的那样)

这里有两个问题

  • 姜饼和蜂巢有什么区别
  • 既然我知道ICS小部件大小不再在小部件之间有填充,这里是否也有一些经验法则

    • 在集成电路中,没有填充,而是自动填充。你用的公式是ICS的。 对于旧版本,还有另一个公式:

      num*74 - 2
      

      没有太多的设备完全遵循谷歌的建议公式。最好使用几个xml xxx文件夹,这些文件夹可以指定更精确的最小宽度和最小高度,以对应不同的屏幕和操作系统

      目前,我仅基于操作系统:

      xml       // standard
      xml-v11   // Honeycomb grid
      xml-v14    // ICS's new extra padding
      xml-sw552dp-v14  // ICS tablet padding
      
      但当我进行微调时,我可能需要为特定的DPI或屏幕添加一些新文件夹

      快速更新:


      只有一些设备使用自动填充。三星和HTC拥有使用全幅面小部件的定制UI,因此它们覆盖了启动器上的操作系统填充。

      在我的4x1小部件中,我将这些尺寸用于res/values/dimens.xml

      <!-- size = (74 x n) - 2 -->
      <dimen name="appwidget_margin">0dp</dimen>
      <dimen name="appwidget_min_width">294dp</dimen>
      <dimen name="appwidget_min_height">72dp</dimen>
      
      <!-- size = (70 x n) - 30 -->
      <dimen name="appwidget_margin">0dp</dimen>
      <dimen name="appwidget_min_width">250dp</dimen>
      <dimen name="appwidget_min_height">40dp</dimen>
      
      
      0dp
      294dp
      72dp
      
      对于res/values-v14/dimens.xml

      <!-- size = (74 x n) - 2 -->
      <dimen name="appwidget_margin">0dp</dimen>
      <dimen name="appwidget_min_width">294dp</dimen>
      <dimen name="appwidget_min_height">72dp</dimen>
      
      <!-- size = (70 x n) - 30 -->
      <dimen name="appwidget_margin">0dp</dimen>
      <dimen name="appwidget_min_width">250dp</dimen>
      <dimen name="appwidget_min_height">40dp</dimen>
      
      
      0dp
      250dp
      40dp
      
      我用于背景图像。

      在这本书中,res/values/dimens.xml中的默认边距应该是8dp,但如果我使用8dp,我的小部件比桌面上的标准小部件(谷歌搜索、天气等)小。这是因为v1-v13的边距构建在背景图像中:

      我在HTC Desire、Nexus S、仿真器Android 2.2和仿真器Android 2.3.3上测试了它。使用上面的模板包背景和配置,我的小部件的大小与其他标准小部件相同,在我测试的所有设备上都很好看


      各种发射器也有问题。我建议阅读本文:

      注意:如果您以pre-Honeycomb为目标(或者在Honeycomb之前指定minSdkVersion时未指定targetSdkVersion),则Honeycomb网格(和ICS网格)计算不会生效。这样做的缺点是您错过了更新的操作系统功能,但如果您实际上不需要这些功能,那么保留target pre Honeycom将省去定制xml文件夹的麻烦。

      因此368dp应该足以满足摩托罗拉xoom上5x1 widget width的要求,根据您的公式,除了它没有,因为我仍然得到一个4x1小部件的宽度:/只有一些设备使用自动填充。三星和HTC都有使用全幅面小部件的定制UI,因此它们覆盖了启动器上的操作系统填充;宽度ICS(n)=(70 x n)-30仅用于ICS,宽度(n)=(74 x n)-2用于姜饼和更早的产品。我在姜饼配方中添加了2*8,显然是为了得到正确的蜂窝状尺寸,我猜这并不准确,但很有效。@MrJre在我的主屏幕小部件中使用姜饼和早期的蜂窝状配方时,我没有任何问题。试过emulator(是的,我很有耐心)和Galaxy Tab 10。1@radley:“没有太多的设备完全遵循谷歌建议的公式”。嗯,我的Nexus7和Android股票报告了我的4x3的3x3小部件。我使用的是minWidth=250dp和minHeight=180dp,正如文档中建议的那样。如果谷歌赞助的设备表现出这样的行为,我们能从其他人那里得到什么…@Jose_GD有一个适合每个人的最佳选择。不过,我想不起这个公式了……这三个系统的最小宽度/最小高度值不同。我们在很多设备上进行了测试,找到了这个最佳点。对于一个4网格范围的小部件:basic xml-android:minWidth=“288dp”、xml-v11-android:minWidth=“318dp”和xml-v14-android:minWidth=“250dp”适用于所有设备。顺便说一句,你推荐的博客文章的作者就是在这里写出公认答案的那个人;)