问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

请问安卓系统玩游戏时怎样旋转屏幕?我是用安卓模拟器在电脑模拟的!

发布网友 发布时间:2022-05-02 01:19

我来回答

5个回答

热心网友 时间:2023-10-08 23:47

android 屏幕旋转 屏是LANDSCAPE的,要让它默认显示为PORTRAIT. 1.kernel里要旋转FrameBuffer. 启动参数里加入fbcon=rotate:1 (0:正常屏; 1:顺时钟转90度; 2:转180度; 3:顺时钟转270度;) 最后生成的autoconf.h里有类似项: #define CONFIG_CMDLINE "console=ttySAC0,115200 fbcon=rotate:1" 此项的解析在$(kernel)/drivers/video/console/fbcon.c static int __init fb_console_setup(char *this_opt); 只是去初始化变量initial_rotation,然后initial_rotation会传递给其他需要的结构。 注意:参考$(kernel)/documentation/fb/fbcon.txt 2.android OS旋转屏幕 系统默认是针对竖屏的,而MID使用的是横屏,所以需要做一个转换的动作。 PORTRAIT LANDSCAPE <------屏幕显示方式 ROTATION_0 ROTATION_90 ROTATION_90 ROTATION_180 ROTATION_180 ROTATION_270 ROTATION_270 ROTATION_0 而source code里对ROTATION_180和ROTATION_270的处理比较少,只在sensor和KeyQueue部分,所以如果只是要让系统显示为竖屏,将android中的Surface.ROTATION_0改为Surface.ROTATION_90,而Surface.ROTATION_90改为Surface.ROTATION_0。 这样,启动后的屏幕就是竖屏的了。 改动后,启动时还是LANDSCAPE显示的,进入HOME也是,很快就会自动旋转到PORTRAIT模式,这是由于 $(cupcake)/frameworks/base/services/java/com/android/server/WindowManagerService.java 中enableScreenAfterBoot()->performEnableScreen()->mPolicy.enableScreenAfterBoot(), mPolicy为父类指针,可以指向 PhoneWindowManager或者MidWindowManager,由配置文件$(cupcake)/build/target/proct/core.mk中 PRODUCT_POLICY := android.policy_phone //PRODUCT_POLICY := android.policy_mid 来指定。 PhoneWindowManager::enableScreenAfterBoot()->updateRotation(Surface.FLAGS_ORIENTATION_ANIMATION_DISABLE)->mWindowManager.setRotation()完成设置旋转并清除LOGO. 3.启动过程中竖屏 启动过程中,默认是按照屏的width和height显示的,不会旋转,要使它显示logo时就是竖屏的,也就是旋转90度,需要做如下工作: $(cupcake)/frameworks/base/libs/surfaceflinger/SurfaceFlinger.cpp status_t SurfaceFlinger::readyToRun()中 //const uint32_t w = hw.getWidth(); //const uint32_t h = hw.getHeight(); //swap w&h for portrait display in landscape panel. jeff. const uint32_t h = hw.getWidth(); const uint32_t w = hw.getHeight(); 交换一下width和height,这样后面用OpenGL创建的ViewPort形状就是竖的了。修改后面的函数参数也可以,不过太多了,交换一下省事。但是怎么让这个竖的viewport旋转90度呢?这里就要用到GraphicPlane::mGlobalTransform这个Transform了。它指示当前最终要旋转的结果。 所以要在创建GraphicPlane时初始化mGlobalTransform为旋转90度。 GraphicPlane::GraphicPlane() : mHw(0) { //add by jeff. for default rotate angel 90 mOrientationTransform.reset(); mOrientation = ISurfaceComposer::eOrientation90; mGlobalTransform = mOrientationTransform * mTransform; } 此段从status_t GraphicPlane::setOrientation(int orientation)复制过来,注意修改mGlobalTransform: if (orientation == ISurfaceComposer::eOrientation90) { //ISurfaceComposer::eOrientationDefault //jeff // make sure the default orientation is optimal mOrientationTransform.reset(); mOrientation = orientation; //mGlobalTransform = mTransform; mGlobalTransform = mOrientationTransform * mTransform; //jeff return NO_ERROR; } 注意mOrientationTransform.reset();要修改为默认旋转90度。参照status_t GraphicPlane::orientationToTransfrom 中的设置,修改为: void Transform::reset() { mTransform.reset(); mType = 0; set(0,-1,1,0); //jeff set(800,0); } 参考: status_t GraphicPlane::orientationToTransfrom( int orientation, int w, int h, Transform* tr) { float a, b, c, d, x, y; switch (orientation) { case ISurfaceComposer::eOrientationDefault: a=1; b=0; c=0; d=1; x=0; y=0; break; case ISurfaceComposer::eOrientation90: a=0; b=-1; c=1; d=0; x=w; y=0; break; case ISurfaceComposer::eOrientation180: a=-1; b=0; c=0; d=-1; x=w; y=h; break; case ISurfaceComposer::eOrientation270: a=0; b=1; c=-1; d=0; x=0; y=h; break; default: return BAD_VALUE; } tr->set(a, b, c, d); tr->set(x, y); return NO_ERROR; } 修改之后,默认就是竖屏(旋转90度)显示了。

热心网友 时间:2023-10-08 23:47

可以选择用显卡驱动的控制器旋转。

热心网友 时间:2023-10-08 23:48

Ctrl+F11旋转屏幕

热心网友 时间:2023-10-08 23:48

试一下这个软件,智能屏幕旋转,下载地址:http://pan.baidu.com/share/link?shareid=3439224293&uk=2335275866

热心网友 时间:2023-10-08 23:49

把电脑显示屏旋转一下就可以了。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
儿童散学归来早描述的是什么季节(儿童散学归来早描写的是什么季节) 超级死神进化论章节目录 我们没有忘记读后感458字作文 贷15万贷10年每月还多少钱 15万10年贷款月供多少 15万贷10年月供多少钱 15万贷款10年一月多少钱 贷款15万10年每月还多少 在银行贷款15万十年还清想知道利息和月供……(还望亲们提供的的2013年... 今天去刷qq空间 看到了一个同学的头像 说明他发了说说 可是怎么刷新... 中超控股星期一还会涨吗? 华为手机第一次充电? 怎么根据资产负债表和利润表编制现金流量表?希望能有实例,谢谢, 用资产负债表和损益表怎样做财务分析 梦见很多死鸡只看见很多脚好不好 小企业如果对资产负债表与利润表直观的分析呢? 怎么分析资产负债表 利润表 现金流量表? 如何对资产负债表,利润表、现金流量表进行分析 举例分析利得或损失如何影响资产负债表和利润表 春语聊天软件是骗人的吗? 各国留学雅思成绩要求多少 有个叫《新生》的聊天软件安全吗 资产负债表、利润表和现金流量表怎么分析? 各国留学雅思成绩要求有哪些? 怎样根据利润表做资产负债表? 星级酒店的服务流程,标准是什么及如何服务? 出国留学雅思考试一般要多少分 损益表或资产负债表解析案例 公共聚集场所应当具备哪些消防安全条件 PIE聊天app是骗人的吗 手玩部落冲突的时候为什么会突然变成竖屏然后有变回来? 玩一个手游 进游戏界面看不了最下边的 竖屏的? 中超控股年报出来了吗此股是否持有 关于现代兵器作文200字 介绍现代兵器的作文 中超控股股票现在可以买进吗 现代兵器一百字~二百字作文 servlet 怎么控制数据库的连接池 关于现代兵器导弹的作文五百字 木木模拟器打开时横屏,一打开游戏就竖屏了,怎么把游戏窗口弄成横屏 现代兵器介绍50字 游戏不能竖屏录制 关于武器的作文,写的生动一点哦!小学四年级400字,速度速度!今天就要 喜欢现代兵器写一篇日记怎么写 写一篇现代兵器坦克的作文 现代兵器手枪的作文 一种现代兵器的介绍 我从书的海洋中学到知识 的作文 现代兵器的介绍 现代兵器有那些最力害