Android 屏幕旋转问题

本文介绍了如何在Android 4.0.4系统中实现开机时的屏幕旋转,关键在于修改'ro.sf.hwrotation'系统属性,调整其值为0, 90, 180或270以实现不同角度的旋转。需要注意的是,当旋转90度和270度时,要交换屏幕的宽度和高度以避免尺寸不匹配的问题。这一设置可以通过修改SurfaceFlinger.cpp文件并更新.mk或build.prop文件来完成。" 106475796,1362984,IP-Guard部门间及内部权限隔离实现策略,"['ip-guard安群区域', 'IPGUARD安全级别', 'ip-guard安全区域', 'ip-guard文档加密']
摘要由CSDN通过智能技术生成

以Android 4.0.4为例


 

如何让Android开机过程中也为横屏或竖屏:

android系统中有“ro.sf.hwrotation”这样一个系统属性,只需要修改其值为对应的旋转角度即可以达到旋转目的(0,90,180,270)

(/frameworks/base/services/surfaceflinger/SurfaceFlinger.cpp)

旋转代码:

void GraphicPlane::setDisplayHardware(DisplayHardware *hw)
{
    mHw = hw;

    // initialize the display orientation transform.
    // it's a constant that should come from the display driver.
    int displayOrientation = ISurfaceComposer::eOrientationDefault;
    char property[PROPERTY_VALUE_MAX];
    if (property_get("ro.sf.hwrotation", property, NULL) > 0) {
        //displayOrientation
        switch (atoi(property)) {
        case 90:
            displayOrientation = ISurfaceComposer::eOrientation90;
            break;
//把180度旋转也添加上+>
        case 180:
            displayOrientation = ISurfaceComposer::eOrientation180;
            break;
//把180度旋转也添加上<+
        case 270:
            displayOrientation = ISurfaceComposer::eOrientation270;
            break;
        }
    }

    const float w = hw->getWidth();
    const float h = hw->getHeight();
    GraphicPlane::orientationToTransfrom(displayOrientation, w, h,
            &mDisplayTransform);//这里做旋转动作
    if (displayOrientation & ISurfaceComposer::eOrientationSwapMask) {
        mDisplayWidth = h;
        mDisplayHeight = w;
    } else {
        mDisplayWidth = w;
        mDisplayHeight = h;
    }

    setOrientation
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值