强制横屏java_Android4.0强制横屏竖屏

Android的启动默认是横屏或者竖屏

我们的TV本来是横屏显示,但是有客户竟然要竖屏显示,昨天快下班收到的需求,竟然说7.19就要搞定。思路有2个,一个就是修改LCD的默认输出,但是这个不是我这个水平能轻而易举搞定的。另外一个就是底层应该给上层porting出接口。像这种系统性的接口一般在build.prop里。

找到一个相关度比较大的属性ro.sf.hwrotation=270,和旋转有关的,联想到0,90,180,270.试试吧,将其改为ro.sf.hwrotation=0,测试了一下,OK,满足客户要求了,就早点下班了。

/ device/samsung/smdk4x12/system.prop(ro.sf.hwrotation )

今天来了搜了一下相关的内容,还是发现了不少知识

1,可以在init.rc里指定系统是横屏还是竖屏

对应setProp ro.sf.hwrotation 0指定默认输出不旋转(我们默认输出时竖屏)

#对应setProp ro.sf.hwrotation 270指定旋转270度输出

2。这个指定角度,Android默认只有0度和270度有效,180度无效,如果想使用180度,需要修改源码

修改文件的框架/基地/服务/的surfaceflinger / SurfaceFlinger.cpp

在方法

无效 GraphicPlane :: setDisplayHardware(DisplayHardware * HW)里加

案例 180:

displayOrientation = ISurfaceComposer :: eOrientation180;

打破;

这样子就支持了180度了

3,还有更详细的 - 安卓4.1默认窗体旋转180度

1)设置属性值

在系统/ build.prop文件中加入ro.sf.hwrotation = 180

2)设置窗体默认显示方向

在框架/本地/服务/的surfaceflinger / SurfaceFlinger.cpp文件中找到方法

setDisplayHardware

在交换机中加入

案例 180:

displayOrientation = ISurfaceComposer :: eOrientation180;

打破;

3)。设置窗体动画旋转方向

一>在框架/底座/核心/ JAVA /机器人/视图/ Surface.java加入方法

/ **

* @隐藏

* /

公共 静态 诠释 getDefaultRotation(){

返回 android.os.SystemProperties.getInt(“ro.sf.hwrotation” ,0); / / 180

}

/ **

* @隐藏

* /

公共 静态 诠释 getDefaultRotationIndex(){

整型 旋转= getDefaultRotation();

开关(旋转){

情况下 0:

返回 ROTATION_0;

案例 90:

返回 ROTATION_90;

案例 180:

返回 ROTATION_180;

案例 270:

返回 ROTATION_270;

}

返回 ROTATION_0;

}

B>在框架/基地/服务/ JAVA / COM /机器人/服务器/ VM / ScreenRotationAnimation.java文件中找到(android4.1)方法setRotation

或(android4.2)方法setRotationInTransaction修改deltaRotation(旋转,Surface.ROTATION_0);

为deltaRotation(旋转,表面getDefaultRotationIndex());

4)修改最近程序视图方向

在框架/底座/包/ systemui / SRC / COM /机器人/ systemui / RecentsPanelView.java文件中修改如下

私人诠释mThumbnailHeight ;/ /加

在方法中添加

公共 无效 updateVoluesFromResources(){

........................................................

mThumbnailHeight = Math.round(res.getDimension(R.dimen.status_bar_recents_thumbnail_height)); / /添加

}

在方法中添加

[Java]中 查看纯副本

私人 无效 updateThumbnail(...){

否则 {

矩阵scaleMatrix =  新的 矩阵();

浮 规模= mThumbnailWidth /(浮动)thumbnail.getWidth();

scaleMatrix.postScale(刻度,刻度); / / setScale

h.thumbnailViewImage.setScaleType(ScaleType.MATRIX);

h.thumbnailViewImage.setImageMatrix(scaleMatrix);

/ /添加

如果(Surface.getDefaultRotation()>  0 ){

矩阵rotateMatrix =  新的 矩阵();

rotateMatrix.setRotate(Surface.getDefaultRotation(),mThumbnailWidth / 2 ,mThumbnailHeight / 2 );

h.thumbnailViewImage.setImageMatrix(rotateMatrix);

}

/ /添加结束

}

5)。修改截屏图片方向

在框架/底座/ pacikages / systemui / SRC / COM /机器人/ systemui / GlobalScreenshot.java文件中找到takeScreenshot方法

修改浮度= getDegreesForRotation(mDisplay.getRotation());

[Java]中 查看纯副本

整型 旋转= mDisplay.getRotation();

如果(Surface.getDefaultRotation()>  0 ){

=旋转(旋转+ Surface.getDefaultRotationIndex())%4 ;

}

浮 度= getDegreesForRotation(旋转);

确定这样就完成屏幕旋转180度

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值