Fixed Window Size mismatch issue 49/316549/4
authorMd. Farhan Mahtab/NC eXperience Group /SRBD/Engineer/Samsung Electronics <farhan.m1@samsung.com>
Thu, 22 Aug 2024 12:17:39 +0000 (18:17 +0600)
committerMd. Farhan Mahtab/NC eXperience Group /SRBD/Engineer/Samsung Electronics <farhan.m1@samsung.com>
Fri, 23 Aug 2024 04:13:43 +0000 (10:13 +0600)
[Problem] App size mismatched in some resolution

[Cause & Measure]
 Cause   : App size is conifgured using constant values considering resolution 1920x1080
 Measure : Used dynamic variables to configure app size using screen resolution

Change-Id: Ibe3298b845ea871bd1da66adc3716861c9829e65
Signed-off-by: Md. Farhan Mahtab/NC eXperience Group /SRBD/Engineer/Samsung Electronics <farhan.m1@samsung.com>
VolumeApp/Common/AppCommon.cs
VolumeApp/Core/ViewManager.cs
VolumeApp/Views/MainView.cs
VolumeApp/VolumeApp.csproj

index 8aec811d1b32b71c576bba804067813add85a570..9ac48fe3adf782792cfcc59ed83808d7ffca9bd4 100644 (file)
@@ -19,25 +19,39 @@ namespace VolumeApp.Common
 {
     static class AppCommon
     {
+        public static float mainViewCornerRadiusRatio = 12.0f / 1920;
         public static Vector4 mainViewCornerRadius = new Vector4(12.0f, 12.0f, 12.0f, 12.0f);
+        public static float mainViewPaddingRatio = 20.0f / 1920;
         public static Extents mainViewPadding = new Extents(20, 20, 20, 20).SpToPx();
         public static Shadow mainViewLightBoxShadow = new Shadow(8.0f, new Color(0, 0, 0, 0.16f), new Vector2(0, 2));
         public static Shadow mainViewDarkBoxShadow = new Shadow(6.0f, new Color(1.0f, 1.0f, 1.0f, 0.16f), new Vector2(0, 1));
+        public static float mainViewWidthRatio = 104.0f / 1920;
         public static int mainViewWidth = 104.SpToPx();
+        public static int mainViewHeight = 540.SpToPx();
+        public static float textLabelPixelSizeRatio = 24.0f / 1920;
         public static int textLabelPixelSize = 24.SpToPx();
         public static int borderLineWidth = 2.SpToPx();
 
         public static int sliderCornerRadius = 8.SpToPx();
+        public static float sliderCornerRadiusRatio = 8.0f / 1920;
 
+        public static float sliderThumbSizeNormalRatio = 24.0f / 1920;
+        public static float sliderThumbSizePressedRatio = 40.0f / 1920;
         public static Size2D sliderThumbSizeNormal = new Size2D(24, 24).SpToPx();
         public static Size2D sliderThumbSizePressed = new Size2D(40, 40).SpToPx();
+        public static float sliderWidthRatio = 24.0f / 1920;
         public static int sliderWidth = 24.SpToPx();
         public static float sliderPaddingRatioPortrait = 0.059f;
         public static float sliderPaddingRatioLandscape = 0.075f;
 
+        public static float iconSizeRatio = 48.0f / 1920;
+        public static float volumeIconMarginRatio = 20.0f / 1920;
         public static Extents volumeIconMargin = new Extents(0, 0, 20, 0).SpToPx();
         public static Size2D iconSize = new Size2D(48, 48).SpToPx();
+        public static float buttonWidthRatio = 252.0f / 1920;
+        public static float buttonHeightRatio = 48.0f / 1080;
         public static Size2D buttonSize = new Size2D(252, 48).SpToPx();
+        public static float buttonCornerRadiusRatio = 12.0f / 1920;
         public static Vector4 buttonCornerRadius = new Vector4(12.0f, 12.0f, 12.0f, 12.0f);
     }
 }
index a14f635878565540d920a4b88d25228febcb2782..28e69eb44b9da4156bf0ac5d5946813d16b40cc9 100644 (file)
@@ -24,6 +24,7 @@ namespace VolumeApp.Core
         private MainView mainView;
         private Timer volumeAppAutoHideTimer;
         private Window window;
+
         public ViewManager()
         {
             window = Window.Instance;
@@ -141,6 +142,7 @@ namespace VolumeApp.Core
             }
             return true;
         }
+
         private bool OnTimerTick(object source, Timer.TickEventArgs e)
         {
             Tizen.Log.Debug(Resources.LogTag, "Auto Hide on tick elapsed.");
index 9bb412186b3f9df9687185812816c491245b1f4f..c0907894ef7c6bd518b9091f8c4f8148e04b875c 100644 (file)
@@ -41,36 +41,39 @@ namespace VolumeApp.Views
         public event Action SafeVolumeLevelPopupRemoved;
         public MainView()
         {
-            WidthSpecification = AppCommon.mainViewWidth;
+            Tizen.Log.Debug(Resources.LogTag, $"Screen Resolution : {ScreenSizeUtils.Width}x{ScreenSizeUtils.Height}");
+            WidthSpecification =  (int)(ScreenSizeUtils.Width * AppCommon.mainViewWidthRatio);
             HeightSpecification = (ScreenSizeUtils.IsPortrait ? ScreenSizeUtils.Width : ScreenSizeUtils.Height) / 2;
             BoxShadow = ThemeColor.PopupBoxShadow;
             DispatchParentTouchEvents = false;
-
             Position2D = UpdatePosition();
-
+            ushort padding  = (ushort)(AppCommon.mainViewPaddingRatio * ScreenSizeUtils.Width);
             Layout = new RelativeLayout()
             {
-                Padding = AppCommon.mainViewPadding,
+                Padding = new Extents(padding, padding, padding, padding).SpToPx(),
             };
-            CornerRadius = AppCommon.mainViewCornerRadius;
+            float cornerRadius = AppCommon.mainViewCornerRadiusRatio * ScreenSizeUtils.Width;
+            CornerRadius = new Vector4(cornerRadius, cornerRadius, cornerRadius, cornerRadius);
+            int volumeIconSize = (int)(AppCommon.iconSizeRatio * ScreenSizeUtils.Width);
             volumeIcon = new ImageView()
             {
-                Margin = AppCommon.volumeIconMargin,
-                Size2D = AppCommon.iconSize,
+                Margin = new Extents(0,0,(ushort)(AppCommon.volumeIconMarginRatio * ScreenSizeUtils.Width),0).SpToPx(),
+                Size2D = new Size2D(volumeIconSize, volumeIconSize).SpToPx(),
                 BackgroundColor = Color.Transparent,
             };
             Add(volumeIcon);
 
             RelativeLayout.SetHorizontalAlignment(volumeIcon, RelativeLayout.Alignment.Center);
             RelativeLayout.SetVerticalAlignment(volumeIcon, RelativeLayout.Alignment.End);
-
+            float sliderCornerRadius = (AppCommon.sliderCornerRadiusRatio * ScreenSizeUtils.Width);
+            int thumbSizeNormal = (int)(AppCommon.sliderThumbSizeNormalRatio * ScreenSizeUtils.Width);
             slider = new Slider()
             {
                 ThemeChangeSensitive = true,
-                WidthSpecification = AppCommon.sliderWidth,
+                WidthSpecification = (int)(AppCommon.sliderWidthRatio * ScreenSizeUtils.Width),
                 Direction = Slider.DirectionType.Vertical,
-                CornerRadius = AppCommon.sliderCornerRadius,
-                ThumbSize = AppCommon.sliderThumbSizeNormal,
+                CornerRadius = new Vector4(sliderCornerRadius, sliderCornerRadius, sliderCornerRadius, sliderCornerRadius),
+                ThumbSize = new Size2D(thumbSizeNormal, thumbSizeNormal).SpToPx(),
                 MinValue = 0.0f,
                 MaxValue = MaxVolume,
                 CurrentValue = AudioManager.VolumeController.Level[AudioVolumeType.Media],
@@ -127,7 +130,8 @@ namespace VolumeApp.Views
             if (safeVolumeLevelPopup != null)
             {
                 slider.IsEnabled = true;
-                slider.ThumbSize = AppCommon.sliderThumbSizeNormal;
+                int thumbSize = (int)(AppCommon.sliderThumbSizeNormalRatio * ScreenSizeUtils.Width);
+                slider.ThumbSize = new Size2D(thumbSize, thumbSize).SpToPx();
                 Window.Instance.Remove(safeVolumeLevelPopup);
                 SafeVolumeLevelPopupRemoved?.Invoke();
                 safeVolumeLevelPopup?.Dispose();
@@ -154,8 +158,8 @@ namespace VolumeApp.Views
         private Position2D UpdatePosition()
         {
             int posX = ScreenSizeUtils.IsPortrait
-                ? ScreenSizeUtils.Width - ((int)(ScreenSizeUtils.Width * AppCommon.sliderPaddingRatioPortrait)) - AppCommon.mainViewWidth
-                : ScreenSizeUtils.Width - ((int)(ScreenSizeUtils.Width * AppCommon.sliderPaddingRatioLandscape)) - AppCommon.mainViewWidth;
+                ? ScreenSizeUtils.Width - ((int)(ScreenSizeUtils.Width * AppCommon.sliderPaddingRatioPortrait)) - (int)(AppCommon.mainViewWidthRatio * ScreenSizeUtils.Width)
+                : ScreenSizeUtils.Width - ((int)(ScreenSizeUtils.Width * AppCommon.sliderPaddingRatioLandscape)) - (int)(AppCommon.mainViewWidthRatio * ScreenSizeUtils.Width);
 
             int posY = (ScreenSizeUtils.Height - (int)SizeHeight) / 2;
             return new Position2D(posX, posY);
@@ -164,12 +168,14 @@ namespace VolumeApp.Views
         private void OnSlidingStarted(object sender, SliderSlidingStartedEventArgs e)
         {
             SliderSlidingStarted?.Invoke();
-            slider.ThumbSize = AppCommon.sliderThumbSizePressed;
+            int thumbSize = (int)(AppCommon.sliderThumbSizePressedRatio * ScreenSizeUtils.Width);
+            slider.ThumbSize = new Size2D(thumbSize, thumbSize).SpToPx();
         }
         private void OnSlidingFinished(object sender, SliderSlidingFinishedEventArgs e)
         {
             SliderSlidingFinished?.Invoke();
-            slider.ThumbSize = AppCommon.sliderThumbSizeNormal;
+            int thumbSize = (int)(AppCommon.sliderThumbSizeNormalRatio * ScreenSizeUtils.Width);
+            slider.ThumbSize = new Size2D(thumbSize, thumbSize).SpToPx();
         }
         private void OnSliderValueChanged(object sender, SliderValueChangedEventArgs e)
         {
@@ -222,29 +228,36 @@ namespace VolumeApp.Views
 
         private void AddSafeLevelVolumePopup()
         {
-            if(cancelButton == null)
+            Size2D buttonSize = new Size2D((int)(AppCommon.buttonWidthRatio * ScreenSizeUtils.Width), (int)(AppCommon.buttonHeightRatio * ScreenSizeUtils.Height)).SpToPx();
+            float buttonCornerRadius = (AppCommon.buttonCornerRadiusRatio * ScreenSizeUtils.Width);
+            int textLabelPixelSize = (Math.Max((int)(AppCommon.textLabelPixelSizeRatio * ScreenSizeUtils.Width), 18)).SpToPx();
+
+            if (cancelButton == null)
             {
                 cancelButton = new Button()
                 {
                     Name = "CancelButton",
                     ThemeChangeSensitive = true,
-                    Size2D = AppCommon.buttonSize,
+                    Size2D = buttonSize,
                     BorderlineWidth = AppCommon.borderLineWidth,
                     Text = "Cancel",
                     BackgroundColor = Color.Transparent,
                 };
                 cancelButton.TextLabel.FontFamily = "BreezeSans";
-                cancelButton.TextLabel.PixelSize = AppCommon.textLabelPixelSize;
+                cancelButton.TextLabel.PixelSize = textLabelPixelSize;
             }
+
             if(increaseButton == null)
             {
                 increaseButton = new Button()
                 {
-                    Size2D = AppCommon.buttonSize,
+                    Size2D = buttonSize,
                     Text = "Increase",
-                    CornerRadius = AppCommon.buttonCornerRadius,
+                    CornerRadius = new Vector4(buttonCornerRadius, buttonCornerRadius, buttonCornerRadius, buttonCornerRadius),
                 };
+                increaseButton.TextLabel.PixelSize = textLabelPixelSize;
             }
+
             if (safeVolumeLevelPopup == null)
             {
                 safeVolumeLevelPopup = new AlertDialog()
@@ -257,18 +270,21 @@ namespace VolumeApp.Views
                 };
                 var title = safeVolumeLevelPopup.TitleContent as TextLabel;
                 title.FontFamily = "BreezeSans";
-                title.PixelSize = AppCommon.textLabelPixelSize;
+                title.PixelSize = textLabelPixelSize;
                 var message = safeVolumeLevelPopup.Content as TextLabel;
                 message.FontFamily = "BreezeSans";
-                message.PixelSize = AppCommon.textLabelPixelSize;
+                message.PixelSize = textLabelPixelSize;
             }
+
             safeVolumeLevelPopup.Content.WidthSpecification = LayoutParamPolicies.MatchParent;
             safeVolumeLevelPopup.ActionContent.WidthSpecification = LayoutParamPolicies.MatchParent;
+
             if (cancelButton.SizeWidth > safeVolumeLevelPopup.WidthSpecification / 2 - 40.SpToPx())
             {
                 cancelButton.SizeWidth = (safeVolumeLevelPopup.WidthSpecification / 2) - 40.SpToPx();
                 increaseButton.SizeWidth = (safeVolumeLevelPopup.WidthSpecification / 2) - 40.SpToPx();
             }
+
             UpdateAlertPopupTheme();
             Window.Instance.Add(safeVolumeLevelPopup);
             Window.Instance.Raise();
index e23dcb70ebd97f3da7798cc9a0ba994c95d61f21..ec1a9d9c46fc9bed225cd29713719b0690f87b6d 100644 (file)
@@ -1,4 +1,4 @@
-<Project Sdk="Tizen.NET.Sdk/1.1.9">
+<Project Sdk="Tizen.NET.Sdk/1.2.1">
 
        <PropertyGroup>
                <OutputType>Exe</OutputType>