亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

屏幕方向鎖定

屏幕方向鎖定

鴻蒙傳說 2019-10-18 14:40:30
是否有可靠的方法可以在所有Android設備上鎖定屏幕方向?以下代碼適用于我的Nexus S和其他手機,但由于某種原因ROTATION_90對應于Xoom上的SCREEN_ORIENTATION_REVERSE_PORTRAIT。有什么方法可以可靠地將旋轉映射到方向?private void lockScreenOrientation() {    if (!mScreenOrientationLocked) {        final int orientation = getResources().getConfiguration().orientation;        final int rotation = getWindowManager().getDefaultDisplay().getOrientation();        if (rotation == Surface.ROTATION_0 || rotation == Surface.ROTATION_90) {            if (orientation == Configuration.ORIENTATION_PORTRAIT) {                setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);            }            else if (orientation == Configuration.ORIENTATION_LANDSCAPE) {                setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);            }        }        else if (rotation == Surface.ROTATION_180 || rotation == Surface.ROTATION_270) {            if (orientation == Configuration.ORIENTATION_PORTRAIT) {                setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT);            }            else if (orientation == Configuration.ORIENTATION_LANDSCAPE) {                setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE);            }        }        mScreenOrientationLocked = true;    }}private void unlockScreenOrientation() {    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);    mScreenOrientationLocked = false;}編輯:此代碼旨在獲取當前方向并將其鎖定。方向被暫時鎖定,然后釋放給用戶。
查看完整描述

3 回答

?
陪伴而非守候

TA貢獻1757條經驗 獲得超8個贊

我略微修改了diyism的答案,以彌補在版本2.3之前不能使用reverse_landscape和reverse_portrait模式的事實


private static void disableRotation(Activity activity)

{       

    final int orientation = activity.getResources().getConfiguration().orientation;

    final int rotation = activity.getWindowManager().getDefaultDisplay().getOrientation();


    // Copied from Android docs, since we don't have these values in Froyo 2.2

    int SCREEN_ORIENTATION_REVERSE_LANDSCAPE = 8;

    int SCREEN_ORIENTATION_REVERSE_PORTRAIT = 9;


    if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.FROYO)

    {

        SCREEN_ORIENTATION_REVERSE_LANDSCAPE = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;

        SCREEN_ORIENTATION_REVERSE_PORTRAIT = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;

    }


    if (rotation == Surface.ROTATION_0 || rotation == Surface.ROTATION_90)

    {

        if (orientation == Configuration.ORIENTATION_PORTRAIT)

        {

            activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

        }

        else if (orientation == Configuration.ORIENTATION_LANDSCAPE)

        {

            activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

        }

    }

    else if (rotation == Surface.ROTATION_180 || rotation == Surface.ROTATION_270) 

    {

        if (orientation == Configuration.ORIENTATION_PORTRAIT) 

        {

            activity.setRequestedOrientation(SCREEN_ORIENTATION_REVERSE_PORTRAIT);

        }

        else if (orientation == Configuration.ORIENTATION_LANDSCAPE) 

        {

            activity.setRequestedOrientation(SCREEN_ORIENTATION_REVERSE_LANDSCAPE);

        }

    }

}


private static void enableRotation(Activity activity)

{

    activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);

}


查看完整回答
反對 回復 2019-10-18
?
侃侃爾雅

TA貢獻1801條經驗 獲得超16個贊

要臨時鎖定屏幕,您可以輕松使用:


//developing for android tablets **<uses-sdk android:minSdkVersion="12" />**

//works perfectly... **WATCH OUT**: look portrait to reverse-portrait on api level 13 :)


currentActivity.setRequestedOrientation(currentActivity.getResources().getConfiguration().orientation);


//to re-enable sensor, just do:


currentActivity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);

在顯示對話框和進行重要的背景工作期間,將其用于臨時屏幕鎖定。


確保currentActivity在您嘗試訪問它時是有效的,否則它將無法正常工作:)


祝好運 :)


查看完整回答
反對 回復 2019-10-18
  • 3 回答
  • 0 關注
  • 715 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號