Android:针对不同的屏幕大小自动运行不同的代码

时间:2011-04-06 22:47:58

标签: android layout android-3.0-honeycomb

在Android文档中:“支持多个屏幕”Google描述了如何针对不同的屏幕尺寸采用不同的布局方案:

res/layout/my_layout.xml  
res/layout-small/my_layout.xml  
res/layout-large/my_layout.xml  
res/layout-large-land/my_layout.xml  
res/layout-xlarge/my_layout.xml  
...

问题在于,对于每个布局都会达到相同的代码:在'onCreate'中我正在使用:
的setContentView(R.layout.my_layout);当然,将根据屏幕尺寸调用正确的布局(xml) 我想要的是xlarge和小屏幕将具有非常不同的布局,在这种情况下,Java代码将是非常不同的。我的问题是如何在代码中区分这些情况?我是否必须使用if / else或者android可以自动执行吗?

2 个答案:

答案 0 :(得分:2)

  

我的问题是如何在代码中区分这些情况?我是否必须使用if / else或者android可以自动执行吗?

你必须“使用一些if / else”,如下所示:

if (getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_LARGE)==Configuration.SCREENLAYOUT_SIZE_LARGE) {
  // yes, we are large
}
else {
  // no, we are not
}

答案 1 :(得分:0)

我希望在较小的屏幕尺寸上启动时打开导航抽屉,并在平板电脑上启动时保持关闭状态。

这是我最终得到的代码:

if(getResources().getConfiguration().smallestScreenWidthDp < 600){
            //Open the navigation drawer automatically
            ((DrawerLayout)    findViewById(R.id.drawer_layout)).openDrawer(GravityCompat.START);
        }else{
            //Don't do anything
        }