android如何改变默认横竖屏方向

来源:互联网 发布:紫藤花种子淘宝 编辑:程序博客网 时间:2024/05/16 00:28

如何改变android默认的横竖屏,修改源码一个地方就可以了。


 public int rotationForOrientationLw(int orientation, int lastRotation,            boolean displayEnabled) {        if (mPortraitRotation < 0) {            // Initialize the rotation angles for each orientation once.            Display d = ((WindowManager)mContext.getSystemService(Context.WINDOW_SERVICE))                    .getDefaultDisplay();            if (d.getWidth() > d.getHeight()) {                mPortraitRotation = Surface.ROTATION_90;                mLandscapeRotation = Surface.ROTATION_0;                mUpsideDownRotation = Surface.ROTATION_270;                mSeascapeRotation = Surface.ROTATION_180;            } else {                mPortraitRotation = Surface.ROTATION_0;                mLandscapeRotation = Surface.ROTATION_90;                mUpsideDownRotation = Surface.ROTATION_180;                mSeascapeRotation = Surface.ROTATION_270;            }        }{Log.i(TAG, "MediaPlayer.is not PlayingVideo");        synchronized (mLock) {            switch (orientation) {                case ActivityInfo.SCREEN_ORIENTATION_PORTRAIT:                    //always return portrait if orientation set to portrait                    //return mPortraitRotation;                    return mUpsideDownRotation;                case ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE:                    //always return landscape if orientation set to landscape                    return mLandscapeRotation;                case ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT:                    //always return portrait if orientation set to portrait                    //return mUpsideDownRotation;return mPortraitRotation;                case ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE:                    //always return seascape if orientation set to reverse landscape                    return mSeascapeRotation;                case ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE:                    //return either landscape rotation based on the sensor                    mOrientationListener.setAllow180Rotation(                            isLandscapeOrSeascape(Surface.ROTATION_180));                    return getCurrentLandscapeRotation(lastRotation);                case ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT:                    mOrientationListener.setAllow180Rotation(                            !isLandscapeOrSeascape(Surface.ROTATION_180));                    return getCurrentPortraitRotation(lastRotation);            }            mOrientationListener.setAllow180Rotation(                    orientation == ActivityInfo.SCREEN_ORIENTATION_FULL_SENSOR                    || orientation == ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);            // case for nosensor meaning ignore sensor and consider only lid            // or orientation sensor disabled            //or case.unspecified            if (mLidOpen) {                return mLidOpenRotation;            } else if (mDockMode == Intent.EXTRA_DOCK_STATE_CAR && mCarDockRotation >= 0) {                return mCarDockRotation;            } else if (mDockMode == Intent.EXTRA_DOCK_STATE_DESK && mDeskDockRotation >= 0) {                return mDeskDockRotation;            } else {                if (useSensorForOrientationLp(orientation)) {                    return mOrientationListener.getCurrentRotation(lastRotation);                }                return Surface.ROTATION_0;            }        }}    }

修改上面倒数一行代码把return Surface.ROTATION_0改为你要的方向,记得这个要和上面的匹配,宽高不同,Surface.ROTATION_0也不同。因为代码开头就有

        if (mPortraitRotation < 0) {            // Initialize the rotation angles for each orientation once.            Display d = ((WindowManager)mContext.getSystemService(Context.WINDOW_SERVICE))                    .getDefaultDisplay();            if (d.getWidth() > d.getHeight()) {                mPortraitRotation = Surface.ROTATION_90;                mLandscapeRotation = Surface.ROTATION_0;                mUpsideDownRotation = Surface.ROTATION_270;                mSeascapeRotation = Surface.ROTATION_180;            } else {                mPortraitRotation = Surface.ROTATION_0;                mLandscapeRotation = Surface.ROTATION_90;                mUpsideDownRotation = Surface.ROTATION_180;                mSeascapeRotation = Surface.ROTATION_270;            }        }





原创粉丝点击