Xamarin.Essentials: 플랫폼 확장
Xamarin.Essentials는 Rect, Size, Point와 같은 플랫폼 형식으로 작업해야 하는 경우 몇 가지 플랫폼 확장 메서드를 제공합니다. 즉, iOS, Android 및 UWP의 특정 유형에 대해 이 유형의 System
버전 사이를 변환할 수 있습니다.
시작하기
이 API를 사용하기 전에 라이브러리가 제대로 설치되고 프로젝트에 설정되어 있는지 확인하기 위해 Xamarin.Essentials에 대한 시작 가이드를 읽어보세요.
플랫폼 확장 사용
클래스에서 Xamarin.Essentials에 대한 참조를 추가합니다.
using Xamarin.Essentials;
모든 플랫폼 확장은 iOS, Android 또는 UWP 프로젝트에서만 호출할 수 있습니다.
Android 확장
이러한 확장은 Android 프로젝트에서만 액세스할 수 있습니다.
애플리케이션 컨텍스트 및 작업
Platform
클래스의 플랫폼 확장을 사용하여 실행 중인 앱에 대한 현재 Context
또는 Activity
에 액세스할 수 있습니다.
var context = Platform.AppContext;
// Current Activity or null if not initialized or not started.
var activity = Platform.CurrentActivity;
Activity
가 필요하지만 애플리케이션이 완전히 시작되지 않은 상황의 경우 WaitForActivityAsync
메서드를 사용해야 합니다.
var activity = await Platform.WaitForActivityAsync();
활동 수명 주기
현재 작업을 가져오는 것 외에도 수명 주기 이벤트를 등록할 수 있습니다.
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
Xamarin.Essentials.Platform.Init(this, bundle);
Xamarin.Essentials.Platform.ActivityStateChanged += Platform_ActivityStateChanged;
}
protected override void OnDestroy()
{
base.OnDestroy();
Xamarin.Essentials.Platform.ActivityStateChanged -= Platform_ActivityStateChanged;
}
void Platform_ActivityStateChanged(object sender, Xamarin.Essentials.ActivityStateChangedEventArgs e) =>
Toast.MakeText(this, e.State.ToString(), ToastLength.Short).Show();
작업 상태는 다음과 같습니다.
- 만듦
- 계속됨
- 일시 중지됨
- 제거됨
- SaveInstanceState
- Started
- Stopped
자세한 내용은 작업 수명 주기 설명서를 참조하세요.
iOS 확장
이러한 확장은 iOS 프로젝트에서만 액세스할 수 있습니다.
현재 UIViewController
현재 표시되는 UIViewController
에 대한 액세스 권한을 얻습니다.
var vc = Platform.GetCurrentUIViewController();
이 메서드는 UIViewController
를 검색할 수 없는 경우 null
을 반환합니다.
플랫폼 간 확장
이러한 확장은 모든 플랫폼에 존재합니다.
Point
var system = new System.Drawing.Point(x, y);
// Convert to CoreGraphics.CGPoint, Android.Graphics.Point, and Windows.Foundation.Point
var platform = system.ToPlatformPoint();
// Back to System.Drawing.Point
var system2 = platform.ToSystemPoint();
크기
var system = new System.Drawing.Size(width, height);
// Convert to CoreGraphics.CGSize, Android.Util.Size, and Windows.Foundation.Size
var platform = system.ToPlatformSize();
// Back to System.Drawing.Size
var system2 = platform.ToSystemSize();
사각형
var system = new System.Drawing.Rectangle(x, y, width, height);
// Convert to CoreGraphics.CGRect, Android.Graphics.Rect, and Windows.Foundation.Rect
var platform = system.ToPlatformRectangle();
// Back to System.Drawing.Rectangle
var system2 = platform.ToSystemRectangle();