基于屏幕尺寸的多屏幕支持

时间:2014-01-24 09:25:24

标签: android android-layout

我正在开发一个在各种尺寸的屏幕上运行的Android应用程序。为此,我创建了文件夹drawable, drawable-ldpi, drawable-mdpi, drawable-hdpi and drawable-xhdpi。对于创建文件夹layout, layout-small, layout-normal, layout-large and layout-xlarge的布局。对于我正在创建values, values-small, values-normal, values-large, values-xlarge的值。这是我第一次使用多屏支持。在互联网上这么多的链接以不同的方式解释了多个屏幕支持。所以我几乎没有问题。

  1. 除了这些文件夹之外还需要其他文件夹吗?
  2. 我做对了吗?
  3. 如何将分辨率从ppi转换为dpi?
  4. 重要的是我只在纵向模式下创建应用程序。

    编辑 -

    首先,我使用ldpi, mdpi, hdpi创建值文件夹。但设备属于相同的dpi但具有不同的大小会产生问题。所以我决定创建上面的文件夹。

4 个答案:

答案 0 :(得分:0)

Dp是密度独立像素,用于概括屏幕所具有的像素数。这些是来自

的概括数字

http://developer.android.com/guide/practices/screens_support.html

xlarge屏幕至少为960dp x 720dp     大屏幕至少640dp x 480dp     正常屏幕至少为470dp x 320dp     小屏幕至少为426dp x 320dp     屏幕的通用Dpi值:

ldpi Resources for low-density (ldpi) screens (~120dpi)
mdpi Resources for medium-density (mdpi) screens (~160dpi). (This is the baseline density.)
hdpi Resources for high-density (hdpi) screens (~240dpi).
xhdpi Resources for extra high-density (xhdpi) screens (~320dpi).
Therefore generalised size of your resources (assuming they are full screen):

ldpi
Vertical = 426 * 120 / 160 = 319.5px
Horizontal = 320 * 120 / 160 = 240px
mdpi
Vertical = 470 * 160 / 160 = 470px
Horizontal = 320 * 160 / 160 = 320px
hdpi
Vertical = 640 * 240 / 160 = 960px
Horizontal = 480 * 240 / 160 = 720px
Edit - adding xhdpi as they are becoming more popular

xhdpi
Vertical = 960 * 320 / 160 = 1920px
Horizontal = 720 * 320 / 160 = 1440px

答案 1 :(得分:0)

   values-w360dp
    values-w360dp-xhdpi
    values-w360dp-xxhdpi


drawable-w360dp

为了更好的参考,请阅读此主题。

http://developer.android.com/guide/practices/screens_support.html

public static int convertDpToPx(int dp,Context context)
    {
        float px = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp,  context.getResources().getDisplayMetrics());
        return (int)px;
    }
    public static int convertPxoDp (int pixel,Context context) 
    {
        float density = context.getResources().getDisplayMetrics().density; 
        int minHeight = (int) (pixel*density + 0.5f);
        return minHeight;
    }

答案 2 :(得分:0)

保持简单愚蠢

already aware关于different folders to provide alternative resources和图片对应用程序的使用情况add it。请随身携带。Graphical Layout到您的应用程序。

现在下一步是, 只需设计您的布局文件,然后查看Preview All Screen Sizes的{​​{1}}。

现在,Check->Analyse->Change if required

你完成了: - )

答案 3 :(得分:0)

  

除了这些文件夹之外还需要其他文件夹吗?

实际上没有“需要”放置任何额外的文件夹。仅在您需要时才创建它们,并且仅当您要为特定设备提供不同的布局/资源时才创建它们。例如,如果您有一个列表视图,其项目在手机上打开详细视图(活动),您可能需要一个单独的平板布局(例如xlarge),它只有1个活动,并且有2个片段并排。

  

我做对了吗?

你现在可以测试一下吗?在不同的设备上运行您的应用程序有任何问题吗?

  

如何将分辨率从ppi转换为dpi?

无法为您提供准确的公式,但您可以在维基百科中找到有关DPIPPI的更多信息。