Added Scale to device info service. Stack layout padding adjsutments depending on android scale.

This commit is contained in:
Kyle Spearrin 2016-08-25 21:43:47 -04:00
parent 5ff9131910
commit 0cdba2a13d
12 changed files with 79 additions and 10 deletions

View file

@ -1,4 +1,6 @@
using Android.App;
using Android.OS; using Android.OS;
using Android.Util;
using Bit.App.Abstractions; using Bit.App.Abstractions;
namespace Bit.Android.Services namespace Bit.Android.Services
@ -7,5 +9,38 @@ namespace Bit.Android.Services
{ {
public string Model => Build.Model; public string Model => Build.Model;
public int Version => (int)Build.VERSION.SdkInt; public int Version => (int)Build.VERSION.SdkInt;
public float Scale
{
get
{
var density = Application.Context.Resources.DisplayMetrics.Density;
if(density <= 0.75)
{
return 0.75f;
}
else if(density <= 1)
{
return 1f;
}
else if(density <= 1.5)
{
return 1.5f;
}
else if(density <= 2)
{
return 2f;
}
else if(density <= 3)
{
return 3f;
}
else if(density <= 4)
{
return 4f;
}
return 1f;
}
}
} }
} }

View file

@ -4,5 +4,6 @@
{ {
string Model { get; } string Model { get; }
int Version { get; } int Version { get; }
float Scale { get; }
} }
} }

View file

@ -113,7 +113,7 @@ namespace Bit.App
var lockPinPage = Current.MainPage.Navigation.ModalStack.LastOrDefault() as LockPinPage; var lockPinPage = Current.MainPage.Navigation.ModalStack.LastOrDefault() as LockPinPage;
if(lockPinPage != null) if(lockPinPage != null)
{ {
lockPinPage.PinControl.Entry.Focus(); lockPinPage.PinControl.Entry.FocusWithDelay();
} }
} }
@ -228,13 +228,7 @@ namespace Bit.App
await Current.MainPage.Navigation.PushModalAsync(new ExtendedNavigationPage(new LockFingerprintPage(!forceLock)), false); await Current.MainPage.Navigation.PushModalAsync(new ExtendedNavigationPage(new LockFingerprintPage(!forceLock)), false);
break; break;
case Enums.LockType.PIN: case Enums.LockType.PIN:
var lockPinPage = (currentPage?.CurrentPage as LockPinPage); await Current.MainPage.Navigation.PushModalAsync(new ExtendedNavigationPage(new LockPinPage()), false);
if(lockPinPage == null)
{
lockPinPage = new LockPinPage();
await Current.MainPage.Navigation.PushModalAsync(new ExtendedNavigationPage(lockPinPage), false);
lockPinPage.PinControl.Entry.Focus();
}
break; break;
case Enums.LockType.Password: case Enums.LockType.Password:
await Current.MainPage.Navigation.PushModalAsync(new ExtendedNavigationPage(new LockPasswordPage()), false); await Current.MainPage.Navigation.PushModalAsync(new ExtendedNavigationPage(new LockPasswordPage()), false);

View file

@ -28,6 +28,7 @@ namespace Bit.App.Controls
Tapped += FormEditorCell_Tapped; Tapped += FormEditorCell_Tapped;
Editor.AdjustMarginsForDevice(); Editor.AdjustMarginsForDevice();
stackLayout.AdjustPaddingForDevice();
View = stackLayout; View = stackLayout;
} }

View file

@ -86,7 +86,7 @@ namespace Bit.App.Controls
{ {
if(deviceInfo.Version < 21) if(deviceInfo.Version < 21)
{ {
Entry.Margin = new Thickness(-9, 0); Entry.Margin = new Thickness(-9, 1, -9, 0);
} }
else if(deviceInfo.Version == 21) else if(deviceInfo.Version == 21)
{ {
@ -97,6 +97,11 @@ namespace Bit.App.Controls
{ {
Entry.AdjustMarginsForDevice(); Entry.AdjustMarginsForDevice();
} }
if(containerPadding == null)
{
imageStackLayout.AdjustPaddingForDevice();
}
} }
if(!useLabelAsPlaceholder) if(!useLabelAsPlaceholder)

View file

@ -40,6 +40,7 @@ namespace Bit.App.Controls
stackLayout.Spacing = 0; stackLayout.Spacing = 0;
} }
Picker.AdjustMarginsForDevice(); Picker.AdjustMarginsForDevice();
stackLayout.AdjustPaddingForDevice();
Tapped += FormPickerCell_Tapped; Tapped += FormPickerCell_Tapped;

View file

@ -92,6 +92,9 @@ namespace Bit.App.Controls
{ {
Button2.Padding = new Thickness(5); Button2.Padding = new Thickness(5);
} }
containerStackLayout.AdjustPaddingForDevice();
} }
containerStackLayout.Children.Add(buttonStackLayout); containerStackLayout.Children.Add(buttonStackLayout);

View file

@ -51,6 +51,7 @@ namespace Bit.App.Controls
{ {
Label.TextColor = Color.Black; Label.TextColor = Color.Black;
} }
stackLayout.AdjustPaddingForDevice();
View = stackLayout; View = stackLayout;
} }

View file

@ -139,6 +139,8 @@ namespace Bit.App.Pages
WinPhone: new Thickness(15, 25)) WinPhone: new Thickness(15, 25))
}; };
containerStackLayout.AdjustPaddingForDevice();
ShowDisclousure = true; ShowDisclousure = true;
View = containerStackLayout; View = containerStackLayout;
} }

View file

@ -215,6 +215,7 @@ namespace Bit.App.Pages
WinPhone: new Thickness(15, 8)) WinPhone: new Thickness(15, 8))
}; };
stackLayout.AdjustPaddingForDevice();
if(Device.OS == TargetPlatform.Android) if(Device.OS == TargetPlatform.Android)
{ {
label.TextColor = Color.Black; label.TextColor = Color.Black;

View file

@ -64,5 +64,29 @@ namespace Bit.App
} }
} }
} }
public static void AdjustPaddingForDevice(this StackLayout view)
{
if(Device.OS == TargetPlatform.Android)
{
var deviceInfo = Resolver.Resolve<IDeviceInfoService>();
if(deviceInfo.Scale == 1) // mdpi
{
view.Padding = new Thickness(21, view.Padding.Top, 21, view.Padding.Bottom);
}
else if(deviceInfo.Scale < 2) // hdpi
{
view.Padding = new Thickness(19, view.Padding.Top, 19, view.Padding.Bottom);
}
else if(deviceInfo.Scale < 3) // xhdpi
{
view.Padding = new Thickness(17, view.Padding.Top, 17, view.Padding.Bottom);
}
else // xxhdpi and xxxhdpi
{
view.Padding = new Thickness(15, view.Padding.Top, 15, view.Padding.Bottom);
}
}
}
} }
} }

View file

@ -21,5 +21,6 @@ namespace Bit.iOS.Core.Services
return -1; return -1;
} }
} }
public float Scale => (float)UIScreen.MainScreen.Scale;
} }
} }