簡體   English   中英

屏幕鎖定后禁止活動旋轉到縱向模式的更好方法是什么?

[英]A better way to prohibit activity rotation to portrait mode after screen is locked?

這是Android的一個獨特之處,當屏幕被鎖定而應用程序/活動處於橫向模式時,它將被銷毀並重新創建,盡管用戶通常會將設備保持在相同位置並在短時間內解鎖。 在這種情況下,再次解鎖屏幕后,活動(由Android設置為縱向模式)將被破壞並再次以橫向模式重新創建。 這就是用戶體驗在橫向模式下令人討厭的原因。 為什么做出這個決定? 如果用戶更改了設備方向,則解鎖后對此更改做出反應就足夠了。

關於資源,這也是一個壞主意。 例如,在相機應用程序中,只要屏幕被鎖定,我就不希望重新初始化相機。 對於任何UI來說,這都是一個很好的做法。

我目前的解決方案如下:

public class CameraActivity extends Activity {

    private boolean screenWasLocked;

    public boolean isScreenLocked() {

        KeyguardManager myKM = (KeyguardManager)getSystemService(Context.KEYGUARD_SERVICE);
        return myKM.inKeyguardRestrictedInputMode();
    }

    protected void create() {

        setContentView(R.layout.activity_main);

        // ...
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);


        if (isScreenLocked()) return;


        create();
    }

    @Override
    protected void onResume() {

        super.onResume();


        if (isScreenLocked()) {

            screenWasLocked = true;
            return;
        }
        else if (screenWasLocked) {

            screenWasLocked = false;
            create();
        }


        // ...
    }

    // Things you do here must accept that logic in create()/onResume() probably wasn't executed
    @Override
    protected void onPause() {

        // ...

        super.onPause();
    }
}

你能建議我一個更好的嗎?

這個用途。

<activity android:name="variables.App.Splash"
              android:configChanges="orientation|keyboard|keyboardHidden|screenSize|screenLayout|uiMode"
              android:screenOrientation="portrait">

並添加到活動

@Override
public void onConfigurationChanged(Configuration newConfig)
{
    super.onConfigurationChanged(newConfig);
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}

@Override
public void onWindowFocusChanged(boolean hasFocus)
{
    super.onWindowFocusChanged(hasFocus);
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM