rainit2006 / My_Windows

0 stars 0 forks source link

Xamarin #28

Open rainit2006 opened 5 years ago

rainit2006 commented 5 years ago

官方网页: https://docs.microsoft.com/en-us/xamarin/get-started/

rainit2006 commented 5 years ago

https://www.aruse.net/entry/2018/09/24/114606

Xamarinとは、iOS, Android などで動作するアプリケーションの開発を、C# で行うことができる開発ツールのことです。 Xamarin は、iOS, Android アプリケーションを開発するために、以下の3種類の機能を持っています。 Xamarin.iOS Xamarin.Android Xamarin.Forms Xamarin.iOS と Xamarin.Android でも、もちろん C# で開発を行えるのですが、画面とプラットフォーム独自の API についてはコードの共有ができないという課題がありました。 この課題を解決するのが、Xamarin.Forms です。

Xamarin の動作原理というと大げさですが、Xamarin は .NET Framework のクロスプラットフォーム版である Mono 上で動作します。Mono 上で動作することで、クロスプラットフォームでの動作を実現させています。 image Android/iOS 端末にアプリをインストールする際、Mono も一緒にインストールされます。そのため、Mono がインストールされることで、小さなアプリケーションではアプリのサイズが大きくなることには注意が必要です。

Android の動作原理: image

iOS の動作原理: image iOS の開発では、Apple が JIT でのコンパイルを規約で禁止しているため、Xamarin で C# のコンパイルを行った後、Xcode でネイティブコードに事前にコンパイルします(AOTコンパイル)。 この動作原理のために、iOS の開発では Mac が必須になるという訳ですね。

rainit2006 commented 5 years ago

Xamarin Form调用各个平台方法

https://blog.csdn.net/qq_31403321/article/details/79479049

不同平台的运行代码:有时候需要在不同的平台上,运行不同的代码。

■在共享的目录中处理逻辑 在Xamarin.Forms中,有这些指令可以使用:#if, #elif, and endif。

#if __IOS__
using UIKit;

#elif __ANDROID__
using Android.OS;

#elif WINDOWS_APP || WINDOWS_PHONE_APP || WINDOWS_UWP
using Windows.Security.ExchangeActiveSyncProvisioning;

#endif

■使用各个平台的共同类 如果要实现在不同平台调用不同平台的类,则需要在每个平台的工程上都要新建一个共同类,类名、方法和命名空间,要完全一致。

■使用各个平台的类 一个库通常不能访问应用程序项目中的类,那么我们是可以使用DependencyService类来调用,各个平台的方法。 怎么做? 1.在Xamarin Forms平台上创建一个接口,让各个平台来实现该接口 2.每个平台实现了该接口后,必须注册在Dependency属性上 3.在Xamarin Forms中,使用DependencyService类的Get方法就可以调用了

rainit2006 commented 5 years ago

显示Popup

在View类,ContentPage类里: await DisplayAlert("Location", point.Latitude + "," + point.Longitude, "OK");

在非View类里:

 Device.BeginInvokeOnMainThread(async () =>
            {
                await DisplayAlert("Location", point.Latitude + "," + point.Longitude, "OK");
            });