上周有个项目需求在横竖屏中控制不一样的布局,我当时采用的方法是写在同一套布局中,监听手机横竖屏的切换事件,来控制布局中各个控件的显示或者隐藏。
这个方法相对来说还行。上几篇帖子中我也说了怎么判断当前手机是横屏模式还是竖屏模式,这里再把工具类贴一下给大家看看:
public static boolean isScreenChange(Context mContext) { Configuration mConfiguration = mContext.getResources().getConfiguration(); int ori = mConfiguration.orientation; if(ori == mConfiguration.ORIENTATION_LANDSCAPE) { return true; }else if(ori == mConfiguration.ORIENTATION_PORTRAIT) { return false; } return false; }
那么今天呢再给大家介绍一个方法,就是在xml layout层面来设置横竖屏切换时的不同布局,方法很简单,需要在res目录下再新建一个文件夹"layout-land",当你在旋转屏幕时程序会自动切换到相应的布局文件夹中,
这里需要注意的一点是:在layout和layout-land两个文件夹中布局文件的名称一定要相同。这样它们才能以同一个资源ID被引用。
这种方式与我说的第一种方式而言,相对比较独立,而且同一个布局文件中不会有太多的控件和在java代码中控制控件的显示和隐藏。
There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.