为7英寸平板电脑创建特定布局,用于纵向/横向更改布局

时间:2013-03-22 16:04:09

标签: android layout rotation screen tablet

我正在使用片段开发典型的平板电脑应用程序:左侧的元素列表和右侧的内容。对于智能手机版本,我只显示一个带有元素列表的片段,对于平板电脑,我会显示2个带有列表和内容的片段。

为了处理屏幕旋转,我正在处理我的应用程序上的旋转。当用户旋转屏幕并且我在右侧显示图像或一些文本时,我将其全屏显示:

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    Log.i(TAG, "onConfigurationChanged");
    if(MainFragmentActivity.isTablet)
    {   
        FragmentManager fm = getSupportFragmentManager();
        if(newConfig.orientation==Configuration.ORIENTATION_LANDSCAPE && !frameTabs.isShown()) //Show again the tabs fragment
        {
            Utils.goNormalScreen(this);
            frameTabs.setVisibility(View.VISIBLE);
        }
        else if(newConfig.orientation==Configuration.ORIENTATION_PORTRAIT && (fm.findFragmentByTag(Utils.SHOW_IMAGE_TAG) != null || fm.findFragmentByTag(Utils.SHOW_TEXT_TAG) != null 
                || fm.findFragmentByTag(Utils.SHOW_WEB_TAG) != null)) //Hide tabs fragment
        {
            Log.i(TAG, "Detected showing image");
            Utils.goFullScreen(this);
            frameTabs.setVisibility(View.GONE);
        }
    }
}

问题是7英寸平板电脑:在纵向模式下,我想要显示智能手机版本(带有列表的1个片段),并在平板电脑版本上显示2个片段。

所以在onConfigurationChanged()中我需要检测7英寸平板电脑并重新创建活动才能更改布局,不是吗?怎么做?还有其他更好的方法让它发挥作用吗?

我是否应该重新创建从服务器(ListView)再次获取所有数据的活动,还是最好将数据保存在捆绑包上并在轮换时重复使用?

1 个答案:

答案 0 :(得分:3)

首先,停止处理配置更改,然后将2片段布局放在layout-sw600dp-land中,并将其他布局保留原样。现在,Android将决定在轮换时自动使用该布局。