Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
sınıfı, Device geliştiricilerin düzeni ve işlevselliği platform temelinde özelleştirmesine yardımcı olacak bir dizi özellik ve yöntem içerir.
Sınıfı, belirli donanım türleri ve boyutlarında kodu hedeflemeye yönelik yöntemlere ve özelliklere ek olarak, Device arka plan iş parçacıklarından kullanıcı arabirimi denetimleriyle etkileşime geçmek için kullanılabilecek yöntemler içerir. Daha fazla bilgi için bkz . Arka plan iş parçacıklarından kullanıcı arabirimiyle etkileşim kurma.
Platforma özgü değerler sağlama
2.3.4'e Xamarin.Forms kadar uygulamanın üzerinde çalıştığı platform, özelliği incelenip Device.OS , TargetPlatform.Android, TargetPlatform.WinPhoneve TargetPlatform.Windows numaralandırma değerleriyle karşılaştırılarak TargetPlatform.iOSelde edilebilirdi. Benzer şekilde, aşırı yüklemelerden biri Device.OnPlatform bir denetime platforma özgü değerler sağlamak için kullanılabilir.
Ancak, 2.3.4'ten bu yana Xamarin.Forms bu API'ler kullanım dışı bırakıldı ve değiştirildi. sınıfı Device artık , , Device.WinPhoneDevice.Android(kullanım dışı), (kullanım Device.UWPdışı), Device.WinRT ve Device.macOSplatformlarını Device.iOStanımlayan genel dize sabitleri içerir. Benzer şekilde, Device.OnPlatform aşırı yüklemeler ve On API'leriyle OnPlatform değiştirilmiştir.
C# dilinde, platforma özgü değerler özelliğinde Device.RuntimePlatform bir switch deyim oluşturulup gerekli platformlar için deyimler sağlanarak case sağlanabilir:
double top;
switch (Device.RuntimePlatform)
{
case Device.iOS:
top = 20;
break;
case Device.Android:
case Device.UWP:
default:
top = 0;
break;
}
layout.Margin = new Thickness(5, top, 5, 0);
OnPlatform ve On sınıfları XAML'de aynı işlevselliği sağlar:
<StackLayout>
<StackLayout.Margin>
<OnPlatform x:TypeArguments="Thickness">
<On Platform="iOS" Value="0,20,0,0" />
<On Platform="Android, UWP" Value="0,0,0,0" />
</OnPlatform>
</StackLayout.Margin>
...
</StackLayout>
OnPlatform sınıfı, hedef türle eşleşen bir öznitelikle örneği oluşturulacak genel bir x:TypeArguments sınıftır. On sınıfında özniteliği tek Platform string bir değeri veya birden çok virgülle ayrılmış string değeri kabul edebilir.
Önemli
sınıfında yanlış Platform öznitelik değeri On sağlanması hataya neden olmaz. Bunun yerine kod, platforma özgü değer uygulanmadan yürütülür.
Alternatif olarak, OnPlatform işaretleme uzantısı platform başına kullanıcı arabirimi görünümünü özelleştirmek için XAML'de kullanılabilir. Daha fazla bilgi için bkz . OnPlatform biçimlendirme uzantısı.
Device.Idiom
özelliği, Device.Idiom uygulamanın üzerinde çalıştığı cihaza bağlı olarak düzenleri veya işlevleri değiştirmek için kullanılabilir. Numaralandırma TargetIdiom aşağıdaki değerleri içerir:
- Telefon – iPhone, iPod touch ve Android cihazlar 600 dipten daha dar^
- Tablet – 600 dipten daha geniş iPad, Windows cihazları ve Android cihazlar^
- Masaüstü – yalnızca Windows 10 masaüstü bilgisayarlardaki UWP uygulamalarında döndürülür (Continuum senaryoları dahil olmak üzere mobil Windows cihazlarında döndürülür
Phone) - TV – Tizen TV cihazları
- İzleme – Tizen watch cihazları
- Desteklenmeyen – kullanılmayan
^ dips mutlaka fiziksel piksel sayısı değildir
Idiom özelliği özellikle aşağıdaki gibi daha büyük ekranlardan yararlanan düzenler oluşturmak için kullanışlıdır:
if (Device.Idiom == TargetIdiom.Phone) {
// layout views vertically
} else {
// layout views horizontally for a larger display (tablet or desktop)
}
sınıfı, OnIdiom XAML'de aynı işlevselliği sağlar:
<StackLayout>
<StackLayout.Margin>
<OnIdiom x:TypeArguments="Thickness">
<OnIdiom.Phone>0,20,0,0</OnIdiom.Phone>
<OnIdiom.Tablet>0,40,0,0</OnIdiom.Tablet>
<OnIdiom.Desktop>0,60,0,0</OnIdiom.Desktop>
</OnIdiom>
</StackLayout.Margin>
...
</StackLayout>
OnIdiom sınıfı, hedef türle eşleşen bir öznitelikle örneği oluşturulacak genel bir x:TypeArguments sınıftır.
Alternatif olarak, OnIdiom işaretleme uzantısı, uygulamanın üzerinde çalıştığı cihazın deyimine göre kullanıcı arabirimi görünümünü özelleştirmek için XAML'de kullanılabilir. Daha fazla bilgi için bkz . OnIdiom biçimlendirme uzantısı.
Device.FlowDirection
değeri, Device.FlowDirection cihaz tarafından kullanılan geçerli akış yönünü temsil eden bir FlowDirection numaralandırma değeri alır. Akış yönü, sayfadaki kullanıcı arabirimi öğelerinin gözle tarandığı yöndür. Numaralandırma değerleri şunlardır:
XAML'de değer, Device.FlowDirection işaretleme uzantısı kullanılarak x:Static alınabilir:
<ContentPage ... FlowDirection="{x:Static Device.FlowDirection}"> />
C# dilinde eşdeğer kod:
this.FlowDirection = Device.FlowDirection;
Akış yönü hakkında daha fazla bilgi için bkz . Sağdan sola Yerelleştirme.
Device.Styles
özelliği,Styles bazı denetimlerin (örneğinLabel) Style özelliğine uygulanabilen yerleşik stil tanımları içerir. Kullanılabilir stiller şunlardır:
- BodyStyle
- CaptionStyle
- ListItemDetailTextStyle
- ListItemTextStyle
- SubtitleStyle
- TitleStyle
Device.GetNamedSize
GetNamedSize C# kodunda ayarlarken FontSize kullanılabilir:
myLabel.FontSize = Device.GetNamedSize (NamedSize.Small, myLabel);
someLabel.FontSize = Device.OnPlatform (
24, // hardcoded size
Device.GetNamedSize (NamedSize.Medium, someLabel),
Device.GetNamedSize (NamedSize.Large, someLabel)
);
Device.GetNamedColor
Xamarin.Forms 4.6, adlandırılmış renkler için destek sunar. Adlandırılmış renk, cihazda hangi sistem modunun (örneğin, açık veya koyu) etkin olduğuna bağlı olarak farklı bir değere sahip olan bir renktir. Android'de adlandırılmış renklere R.Color sınıfı aracılığıyla erişilir. iOS'ta, adlandırılmış renkler sistem renkleri olarak adlandırılır. Evrensel Windows Platformu adlandırılmış renkler XAML tema kaynakları olarak adlandırılır.
GetNamedColor yöntemi Android, iOS ve UWP'de adlandırılmış renkleri almak için kullanılabilir. yöntemi bir string bağımsız değişken alır ve döndürür Color:
// Retrieve an Android named color
Color color = Device.GetNamedColor(NamedPlatformColor.HoloBlueBright);
Color.Default bir renk adı bulunamadığında veya desteklenmeyen bir platformda çağrıldığında GetNamedColor döndürülür.
Not
GetNamedColor yöntemi bir platforma özgü bir Color döndürdüğünden, genellikle özelliğiyle Device.RuntimePlatform birlikte kullanılmalıdır.
sınıfı, NamedPlatformColor Android, iOS ve UWP için adlandırılmış renkleri tanımlayan sabitleri içerir:
| Android | iOS | Mac OS | UWP |
|---|---|---|---|
BackgroundDark |
Label |
AlternateSelectedControlTextColor |
SystemAltHighColor |
BackgroundLight |
Link |
ControlAccent |
SystemAltLowColor |
Black |
OpaqueSeparator |
ControlBackgroundColor |
SystemAltMediumColor |
DarkerGray |
PlaceholderText |
ControlColor |
SystemAltMediumHighColor |
HoloBlueBright |
QuaternaryLabel |
DisabledControlTextColor |
SystemAltMediumLowColor |
HoloBlueDark |
SecondaryLabel |
FindHighlightColor |
SystemBaseHighColor |
HoloBlueLight |
Separator |
GridColor |
SystemBaseLowColor |
HoloGreenDark |
SystemBlue |
HeaderTextColor |
SystemBaseMediumColor |
HoloGreenLight |
SystemGray |
HighlightColor |
SystemBaseMediumHighColor |
HoloOrangeDark |
SystemGray2 |
KeyboardFocusIndicatorColor |
SystemBaseMediumLowColor |
HoloOrangeLight |
SystemGray3 |
Label |
SystemChromeAltLowColor |
HoloPurple |
SystemGray4 |
LabelColor |
SystemChromeBlackHighColor |
HoloRedDark |
SystemGray5 |
Link |
SystemChromeBlackLowColor |
HoloRedLight |
SystemGray6 |
LinkColor |
SystemChromeBlackMediumColor |
TabIndicatorText |
SystemGreen |
PlaceholderText |
SystemChromeBlackMediumLowColor |
Transparent |
SystemIndigo |
PlaceholderTextColor |
SystemChromeDisabledHighColor |
White |
SystemOrange |
QuaternaryLabel |
SystemChromeDisabledLowColor |
WidgetEditTextDark |
SystemPink |
QuaternaryLabelColor |
SystemChromeHighColor |
SystemPurple |
SecondaryLabel |
SystemChromeLowColor |
|
SystemRed |
SecondaryLabelColor |
SystemChromeMediumColor |
|
SystemTeal |
SelectedContentBackgroundColor |
SystemChromeMediumLowColor |
|
SystemYellow |
SelectedControlColor |
SystemChromeWhiteColor |
|
TertiaryLabel |
SelectedControlTextColor |
SystemListLowColor |
|
SelectedMenuItemTextColor |
SystemListMediumColor |
||
SelectedTextBackgroundColor |
|||
SelectedTextColor |
|||
Separator |
|||
SeparatorColor |
|||
ShadowColor |
|||
SystemBlue |
|||
SystemGray |
|||
SystemGreen |
|||
SystemIndigo |
|||
SystemOrange |
|||
SystemPink |
|||
SystemPurple |
|||
SystemRed |
|||
SystemTeal |
|||
SystemYellow |
|||
TertiaryLabel |
|||
TertiaryLabelColor |
|||
TextBackgroundColor |
|||
TextColor |
|||
UnderPageBackgroundColor |
|||
UnemphasizedSelectedContentBackgroundColor |
|||
UnemphasizedSelectedTextBackgroundColor |
|||
UnemphasizedSelectedTextColor |
|||
WindowBackgroundColor |
|||
WindowFrameTextColor |
Device.StartTimer
sınıfıDevice, .NET Standard kitaplığı da dahil olmak üzere ortak kodda Xamarin.Forms çalışan zamana bağlı görevleri tetiklemenin basit bir yolunu sağlayan bir yönteme de sahiptirStartTimer. Aralığı ayarlamak için bir TimeSpan geçirin ve zamanlayıcıyı çalışır durumda tutmak veya false geçerli çağrıdan sonra durdurmak için döndürtrue.
Device.StartTimer (new TimeSpan (0, 0, 60), () =>
{
// do something every 60 seconds
return true; // runs again, or false to stop
});
Zamanlayıcının içindeki kod kullanıcı arabirimiyle etkileşim kuruyorsa (örneğin, bir Label metnini ayarlama veya uyarı görüntüleme) bir ifade içinde BeginInvokeOnMainThread yapılmalıdır (aşağıya bakın).
Not
System.Timers.Timer ve System.Threading.Timer sınıfları, yöntemini kullanmaya Device.StartTimer yönelik .NET Standard alternatifleridir.
Arka plan iş parçacıklarından kullanıcı arabirimiyle etkileşim kurma
iOS, Android ve Evrensel Windows Platformu dahil olmak üzere çoğu işletim sistemi, kullanıcı arabirimini içeren kod için tek iş parçacıklı bir model kullanır. Bu iş parçacığı genellikle ana iş parçacığı veya kullanıcı arabirimi iş parçacığı olarak adlandırılır. Bu modelin bir sonucu, kullanıcı arabirimi öğelerine erişen tüm kodların uygulamanın ana iş parçacığında çalıştırılması gerektiğidir.
Uygulamalar bazen bir web hizmetinden veri alma gibi uzun süre çalışan işlemler gerçekleştirmek için arka plan iş parçacıklarını kullanır. Arka plan iş parçacığında çalışan kodun kullanıcı arabirimi öğelerine erişmesi gerekiyorsa, bu kodu ana iş parçacığında çalıştırması gerekir.
sınıfı, Device arka plan iş parçacıklarından kullanıcı arabirimi öğeleriyle etkileşime geçmek için kullanılabilecek aşağıdaki static yöntemleri içerir:
| Metot | Bağımsız değişkenler | Döndürülenler | Purpose |
|---|---|---|---|
BeginInvokeOnMainThread |
Action |
void |
Ana iş parçacığında bir Action çağırır ve tamamlanmasını beklemez. |
InvokeOnMainThreadAsync<T> |
Func<T> |
Task<T> |
Ana iş parçacığında bir Func<T> çağırır ve tamamlanmasını bekler. |
InvokeOnMainThreadAsync |
Action |
Task |
Ana iş parçacığında bir Action çağırır ve tamamlanmasını bekler. |
InvokeOnMainThreadAsync<T> |
Func<Task<T>> |
Task<T> |
Ana iş parçacığında bir Func<Task<T>> çağırır ve tamamlanmasını bekler. |
InvokeOnMainThreadAsync |
Func<Task> |
Task |
Ana iş parçacığında bir Func<Task> çağırır ve tamamlanmasını bekler. |
GetMainThreadSynchronizationContextAsync |
Task<SynchronizationContext> |
Ana iş parçacığı için değerini SynchronizationContext döndürür. |
Aşağıdaki kodda yöntemini kullanma örneği gösterilmektedir BeginInvokeOnMainThread :
Device.BeginInvokeOnMainThread (() =>
{
// interact with UI elements
});