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);
        }
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值