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
  • 중지됨

자세한 내용은 작업 수명 주기 설명서를 참조하세요.

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();

API