Android布局mdpi手机vs平板电脑

时间:2014-03-04 13:52:44

标签: android android-layout mdpi

我正在开发一个Android应用程序(API 11+),我想支持多个屏幕大小和密度,我的项目有不同的密度文件夹,以提供可绘制资源(mdpi,hdpi,xhdpi和xxhdpi)和不同的布局文件夹限定符(小,正常,大和xlarge)。

来自Google文档:

xlarge screens are at least 960dp x 720dp
large screens are at least 640dp x 480dp
normal screens are at least 470dp x 320dp
small screens are at least 426dp x 320dp

我认为我理解“dp”单元。如果我没错,480x800px mdpi手机屏幕有480x800dp单位,因为在mdpi设备1px = 1dp,所以这个屏幕应该很大。具有相同尺寸和密度的平板电脑太大了吗?

如何为这2台设备提供不同的布局?我该如何区分它们?

3 个答案:

答案 0 :(得分:1)

对于drawables有不同的文件夹,您可以为屏幕尺寸创建不同的布局。

res/layout/my_layout.xml             // layout for normal screen size ("default")
res/layout-small/my_layout.xml       // layout for small screen size
res/layout-large/my_layout.xml       // layout for large screen size
res/layout-xlarge/my_layout.xml      // layout for extra large screen size
res/layout-xlarge-land/my_layout.xml // layout for extra large in landscape orientation

res/drawable-mdpi/my_icon.png        // bitmap for medium density
res/drawable-hdpi/my_icon.png        // bitmap for high density
res/drawable-xhdpi/my_icon.png       // bitmap for extra high density

来自Android文档:http://developer.android.com/guide/practices/screens_support.html

修改 要以编程方式检测设备是手机还是平板电脑,您可以使用以下代码:

public static boolean isTablet(Context context) {
    return (context.getResources().getConfiguration().screenLayout
            & Configuration.SCREENLAYOUT_SIZE_MASK)
            >= Configuration.SCREENLAYOUT_SIZE_LARGE;
}

然后,在您的活动中,您可以根据之前的值设置不同的布局:

@Override
onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);

    if isTablet(this)
        setContentView(R.layout.handset_main_layout);
    else
        setContentView(R.layout.tablet_maint_layout);
}

这只是一个例子。

答案 1 :(得分:1)

你说的mdpi设备很可能是相当大的。像平板电脑一样双。 但是由于这些不公平性(并且因为不同的设备错误地报告了它们的大小/ dpi值),Android决定采用不同的方法。 如果您只能重新考虑定位Android 13+(这是合理的,因为11-12的市场份额约为0%),您可以使用swXXXdp(dp中最小宽度)过滤器:

    res/layout-mdpi/content.xml          for phones and phablets
    res/layout-sw600dp-mdpi/content.xml  for 7" tablet
    res/layout-sw720dp-mdpi/content.xml  for 10" tablet and above

dpi值在这里并不重要。只是如果你想让这些图像看起来更清晰/光亮。

答案 2 :(得分:0)

如果您不使用像素作为任何东西并为ldpi,mdpi,xdpi等提供不同的资源,那么您将获得很长的路要走。系统将确定应该为特定设备使用的布局文件和资产。