Android系统默认是竖屏显示的,想要完成横屏显示,按以下步骤配置即可实现功能:
1.在目录frameworks/base/cmds/bootanimation/BootAnimation.cpp中修改
- // create the native surface
-
- sp control = session()->createSurface(String8("BootAnimation"),
-
- - resolution.getWidth(), resolution.getHeight(), PIXEL_FORMAT_RGB_565);
-
- + resolution.getHeight(), resolution.getWidth(), PIXEL_FORMAT_RGB_565);
-
- SurfaceComposerClient::Transaction t;
-
- + Rect destRect(resolution.getHeight(), resolution.getWidth());
-
- + t.setDisplayProjection(mDisplayToken, ui::ROTATION_90, destRect, destRect);
-
- // this guest property specifies multi-display IDs to show the boot animation
-
2.在目录frameworks/base/core/java/com/android/internal/view/RotationPolicy.java修改
- public final class RotationPolicy {
-
- private static final String TAG = "RotationPolicy";
-
- private static final int CURRENT_ROTATION = -1;
-
- - public static final int NATURAL_ROTATION = Surface.ROTATION_0;
-
- + public static final int NATURAL_ROTATION = Surface.ROTATION_90;
-
- private RotationPolicy() {
-
- }
3.在目录frameworks/base/services/core/java/com/android/server/wm/DisplayRotation.java修改
- public class DisplayRotation {
-
-
- - private int mRotation;
-
- + private int mRotation = 1;
-
-
- int mLandscapeRotation; // default landscape
-
- if (preferredRotation >= 0) {
-
- return preferredRotation;}
-
- - return Surface.ROTATION_0;
-
- + return Surface.ROTATION_90;
-
-
4.其次修改native层代码,frameworks/native/services/surfaceflinger/DisplayDevice.cpp
- setPowerMode(args.initialPowerMode);
-
- // initialize the display orientation transform.
-
- - setProjection(ui::ROTATION_0, Rect::INVALID_RECT, Rect::INVALID_RECT);
-
- + setProjection(ui::ROTATION_90, Rect::INVALID_RECT, Rect::INVALID_RECT);
-
- }
-
- DisplayDevice::~DisplayDevice() = default;
- void DisplayDevice::setProjection(ui::Rotation orientation, Rect viewport, Rect
- if (!frame.isValid()) {
- // the destination frame can be invalid if it has never been set,
- // in that case we assume the whole display frame.
- + if( displayWidth < displayHeight)
- + frame = Rect(displayHeight, displayWidth);
- + else
- frame = Rect(displayWidth, displayHeight);
- }
5.然后再在frameworks/native/services/surfaceflinger/SurfaceFlinger.cpp
void SurfaceFlinger::onInitializeDisplays() {
DisplayState::eLayerStackChanged;
d.token = token;
d.layerStack = 0;
- d.orientation = ui::ROTATION_0;
+ d.orientation = ui::ROTATION_90;
d.frame.makeInvalid();
d.viewport.makeInvalid();
d.width = 0;
说明:文中修改部分+号代表增加 -代表删除
至此 开机默认开机横屏功能已经配置完成 !!!
觉得我写的号的兄弟给个赞!!!谢谢