android activity 全屏非全屏切換

此文版權屬於作者所有,任何人、媒體或者網站轉載、借用都必須徵得作者本人同意!

android app 通過代碼,在全屏和非全屏之間切換

import android.app.Activity;
import android.content.pm.ActivityInfo;
import android.os.Build;
import android.view.WindowManager;

public class FullScreenOperator {
    private static boolean sIsFullScreen = false;
    private static int sOrientation = 0;
    private static int sSystemUiVisibility = 0;
    private static int sEnterCount = 0;

    private static boolean isFullScreen(Activity activity) {
        return WindowManager.LayoutParams.FLAG_FULLSCREEN
                == (activity.getWindow().getAttributes().flags
                        & WindowManager.LayoutParams.FLAG_FULLSCREEN);
    }

    public static void enter(Activity activity) {
        ++sEnterCount;

        //Log.v(TAG, "enter " + sEnterCount + ", activity " + activity);

        if (activity == null || sEnterCount != 1)
            return;

        sIsFullScreen = isFullScreen(activity);
        sOrientation = activity.getRequestedOrientation();

        if (Build.VERSION.SDK_INT >= 14) {
            sSystemUiVisibility = activity.getWindow().getDecorView().getSystemUiVisibility();
        }

        if (!sIsFullScreen) {
            activity.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                    WindowManager.LayoutParams.FLAG_FULLSCREEN);
        }

        activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);

        if (Build.VERSION.SDK_INT >= 16) {
            // View.SYSTEM_UI_FLAG_FULLSCREEN = 0x00000004
            activity.getWindow().getDecorView().setSystemUiVisibility(0x00000004);
        }
    }

    public static void exit(Activity activity) {
        --sEnterCount;

        //Log.v(TAG, "exit " + sEnterCount + ", activity " + activity);

        if (activity == null || sEnterCount != 0)
            return;

        if (!sIsFullScreen)
            activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);

        activity.setRequestedOrientation(sOrientation);

        if (Build.VERSION.SDK_INT >= 14) {
            activity.getWindow().getDecorView().setSystemUiVisibility(sSystemUiVisibility);
        }
    }
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章