protected override void OnExecute(UIMessageContext ctx)
        {
            var request = ctx.Get <SetDeviceOrientationRequest>();

            if (request == null)
            {
                return;
            }

            DisplayDimensions dims = null;
            var orientationSvc     = InspectorContainer.Current.Resolve <IDeviceOrientation>();
            var dimSvc             = InspectorContainer.Current.Resolve <IDisplayDimensions>();

            Thread.Invoke(() =>
            {
                orientationSvc.SetOrientation(request.Orientation);
                dims = dimSvc.GetDimensions();
            });

            ctx.SetResponse <SetDeviceOrientationResponse>(r =>
            {
                r.Height = dims.Height;
                r.Width  = dims.Width;
            });
        }
Example #2
0
        public DisplayDimensions GetDimensions()
        {
            var result   = new DisplayDimensions();
            var activity = (Activity)Xamarin.Forms.Forms.Context;

            if (activity == null)
            {
                return(null);
            }

            var size = new Point();

            activity.WindowManager.DefaultDisplay.GetRealSize(size);

            result.Width   = size.X;
            result.Height  = size.Y;
            result.Density = Math.Round(activity.Resources.DisplayMetrics.Density, 2);

            var statusBarId = activity.Resources.GetIdentifier("status_bar_height", "dimen", "android");

            if (statusBarId > 0)
            {
                result.StatusBarHeight = activity.Resources.GetDimensionPixelSize(statusBarId);
            }

            var navbarId = activity.Resources.GetIdentifier("navigation_bar_height", "dimen", "android");

            if (navbarId > 0)
            {
                result.NavigationBarHeight = activity.Resources.GetDimensionPixelSize(navbarId);
            }

            return(result);
        }
        protected override void OnExecute(UIMessageContext ctx)
        {
            var request = ctx.Get <GetDisplayDimensionsRequest>();

            if (request == null)
            {
                return;
            }

            var dimensionService = InspectorContainer.Current.Resolve <IDisplayDimensions>();
            var dimensions       = new DisplayDimensions();

            Thread.Invoke(() =>
            {
                dimensions = dimensionService.GetDimensions();
            });

            ctx.SetResponse <GetDisplayDimensionsResponse>(r =>
            {
                r.Density             = dimensions.Density;
                r.Height              = dimensions.Height;
                r.Width               = dimensions.Width;
                r.NavigationBarHeight = dimensions.NavigationBarHeight;
                r.StatusBarHeight     = dimensions.StatusBarHeight;
            });
        }