1) 自定义横屏Launcher
2) android-4.2 Phone style
3) 启动的时候会先竖屏然后再转成横屏
原因:
android会根据屏幕的pix去算宽和高,在PhoneWindowManager中会确定用Tablet或者Phone
在WMS中,会在computeScreenConfigurationLocked中确定初始的启动采用横屏或者竖屏,
if (config != null) {
config.orientation = (dw <= dh) ? Configuration.ORIENTATION_PORTRAIT :
Configuration.ORIENTATION_LANDSCAPE;
Slog.d(TAG, " dw = " + dw + ", dh = " + dh
+ ", config.orientation = " + config.orientation);
}
和横竖屏相关的参数
final int realdw = rotated ?
displayContent.mBaseDisplayHeight : displayContent.mBaseDisplayWidth;
final int realdh = rotated ?
displayContent.mBaseDisplayWidth : displayContent.mBaseDisplayHeight;
具体的查找比较复杂,不详细说了,感兴趣可以看看mBaseDisplayHeight和mBaseDisplayWidth如何赋值的
在WMS中和初始状态相关的变量为mRotation, 默认为0, 加之是竖屏,所以会以竖屏先来layout,当发现launcher的
指定为横屏以后,接着在以横屏来layout,这就是转屏的原因
改法很简单,把mRotation = 0; 改为 mRotation = 1;让它在初始是为竖屏,旋转了90度,这不就是横屏了吗