Example #1
0
        public static float GetStatusBarHeight(AndroidJavaObject activity)
        {
            if (Application.isEditor || activity == null)
            {
                return(0);
            }

            var context        = GetApplicationContext(activity);
            var resources      = GetResources(context);
            var displayMetrics = GetDisplayMetrics(resources);

            float height     = 0;
            int   resourceId = resources.Call <int>("getIdentifier", "status_bar_height", "dimen", "android");

            if (resourceId > 0)
            {
                height = resources.Call <int>("getDimensionPixelSize", resourceId);
            }
            else
            {
                var density = GetScreenDensity(displayMetrics);
                int sdkInt  = AndroidThemeNativeUtils.GetSdkVersion();
                height = Mathf.Ceil(sdkInt >= SDK_ANDROID_M? 24 : 25 * density);
            }

            return(height);
        }
Example #2
0
        public virtual void ApplyStatusBarTheme()
        {
            if (m_enabled)
            {
                if (FullScreenMode != FullScreenModeEnum.Default)
                {
                    var defaultFullScreen = Screen.fullScreen;
                    var isFullScreen      = FullScreenMode == FullScreenModeEnum.Default ? defaultFullScreen : (FullScreenMode == FullScreenModeEnum.Enabled ? true : false);
                    if (defaultFullScreen != isFullScreen)
                    {
                        Screen.fullScreen = isFullScreen;
                    }
                }
#if UNITY_ANDROID
                if (m_changeStatusBarColor)
                {
                    AndroidThemeNativeUtils.SetStatusBarColor(m_statusBarColor, m_useLightIconsOnStatusBar);
                }
                if (m_changeNavigationBarColor)
                {
                    AndroidThemeNativeUtils.SetNavigationBarColor(m_navigationBarColor, m_useLightIconsOnNavigationBar);
                }
#endif
            }
        }
        public static float GetStatusBarHeight(bool force = false)
        {
            if (s_cachedStatusBarHeight < 0 || force)
            {
#if UNITY_IPHONE && !UNITY_EDITOR
                s_cachedStatusBarHeight = _GetStatusBarHeight();
#elif UNITY_ANDROID && UNITY_2019_1_OR_NEWER && !UNITY_EDITOR
                var activity = AndroidThemeNativeUtils.GetActivity();
                s_cachedStatusBarHeight = AndroidThemeNativeUtils.GetStatusBarHeight(activity);
#else
                s_cachedStatusBarHeight = 0;
#endif
            }
            return(s_cachedStatusBarHeight);
        }
        public static bool IsStatusBarActiveWithLayoutStable(bool force = false)
        {
            if (s_cachedIsStatusBarActive == null || force)
            {
#if UNITY_IPHONE && !UNITY_EDITOR
                s_cachedIsStatusBarActive = _IsIOSStatusBarActive();
#elif UNITY_ANDROID && !UNITY_EDITOR
                var activity = AndroidThemeNativeUtils.GetActivity();
                var window   = AndroidThemeNativeUtils.GetWindow(activity);

                s_cachedIsStatusBarActive = !Screen.fullScreen && AndroidThemeNativeUtils.IsStatusBarActive(window) && AndroidThemeNativeUtils.IsViewBehindBars(window);
#else
                s_cachedIsStatusBarActive = false;
#endif
            }
            return(s_cachedIsStatusBarActive != null ? s_cachedIsStatusBarActive.Value : false);
        }