ThanksView
|
修改分为三部分:
1: 上层(Java)修改 既然设计到屏幕的修改, 肯定想到了直接修改WMS(比较粗暴的方式)。 其实Android的很多的需求都是通过配置文件来的, 这么明显的设计需求只要去找相应的配置就可以了。 frameworks/base/ core/res/res/values/config.xml <bool name="config_supportAutoRotation">false<</bool> 这里设置为false后,开机会自动旋转。 我们这里使用默认的true, 这样可以保证开机竖屏。 <bool name="config_supportAutoRotation">true<</bool> <integer name="config_lidOpenRotation">90</integer>修改后发现开机后, 开机画面是横屏显示的,进入锁屏界面, 屏幕做了一次旋转操作, 这个时候窗口才真正的竖屏。 跟需求还不一样, 进入锁屏前需要 竖 屏。 所以需要修改WMS的默认方向。 frameworks/base/services/core/java/com/android/server/wm/WindowManagerService.java int mRotation =1; 修改后开机发现: 开机画面启动后是横屏的, 运行一段时间变成 竖 屏, 进入锁屏界面, 也是 竖 屏, 不用再做 竖屏 切换。
2: 底层(C++)修改
编译成功刷入系统会出现开机动画部分只显示3/4解决方案如下
:
1、进入framework/base/cmds/bootanimation/BootAnimation.cpp
修改status_t
BootAnimation::readyToRun函数中的
spcontrol=session()-
>createsurface(String8("BootAnimation"),dinfo.w,dinfo.h.PIXEL_FORMAT_RGB_565);
为:
spcontrol=session()-
>createsurface(String8"BootAnimation"),dinfo.h,dinfo.w.PIXEL_FORMAT_RGB_565);
2、进入/framework/native/services/surfaceflinger/DisplayDevice.cpp
修改函数 void DisplayDevice::setProjection(intorientation, conts Rect&newViewport,constRect&newFrame)中
if(!frame.isValid()){
frame = Rect(w,h);----->frame = Rect(h,w);
}
到此应该能正常竖屏显示了,如果有部分用户在这里还是显示一半的,可以进行下面的两个操作。如果已经正常显示的用户 后面的两个步骤就可以省略了 :)
在Transform R; 下面添加
orientation = DisplayState::eOrientation90;
3、
进入/framework/native/services/surfaceflinger/surfaceFlinger.cpp
修改函数voidSurfaceFlinger::onInitializeDisplay()中:
d.orientation = DisplayState::eOrientationDefault ;----->
d.orientation=DisplayState::eOrientation90;
最后编译生成镜像。
|
三维半岛官网: http://www.thanksview.com
进入首页-
产品展示
物联网与人工智能 -
方案定制
嵌入式系统与液晶屏方案定制开发 -
技术支持
常见问题分析与解决