最近做Pad项目,要求支持横屏模式。需要4*8转成8*3。花了几天时间研究研究。
首先,只要删除AndroidManifest.xml , Launcher 对应activity 的android:screenOrientation="nosensor"即可支持横屏。
但是横屏之后界面果然够丑,pad 横屏布局要重新调整下。
要添加横屏的布局文件。default_workspace_8x3.xml,修改Icon位置。
添加横竖屏切换时调用不同布局,icon大小可以定制。
文件:DynamicGrid.java
Configuration mConfiguration = context.getResources().getConfiguration();
int ori = mConfiguration.orientation ;
if(ori == Configuration.ORIENTATION_LANDSCAPE){
deviceProfiles.add(new DeviceProfile("xxx Tablet",
557, 906, 3, 8, (useLargeIcons ? 76 : 64), 12f, 7, (useLargeIcons ? 76 : 64),
R.xml.default_workspace_8x3));
}else if(ori == Configuration.ORIENTATION_PORTRAIT){
deviceProfiles.add(new DeviceProfile("xxx Tablet",
557, 906, 6, 4, (useLargeIcons ? 76 : 64), 12f, 7, (useLargeIcons ? 76 : 64),
R.xml.default_workspace_4x6));
}
修改config.xml
<integer name="config_dynamic_grid_max_long_edge_cell_count">8</integer>
<integer name="config_dynamic_grid_max_short_edge_cell_count">3</integer>
通过这两个值,launcher会自动计算icon间距离,摆放位置。
至此,可以横竖屏切换了。
当有widget横竖屏切换时,还有问题。
横屏时,1x4的widget放置到第一行三列,在竖屏,啊啊啊,有一部分被遮挡,这个我现在也没有好的方案。参考了几家pad,widget控制在单独一个screen,可以避免,但是也有瑕疵。有知道的可以交流下。