Slide 1

Slide 1 text

NativeΞϓϦΛ Xamarin.FormsʹҠ২ͯ͠Έͨ࿩ 2016೥5݄7೔ ઌ୺ٕज़ࣄۀ෦ εϚʔτιϦϡʔγϣϯηϯλʔ ٢ాক໌ Xamarin User Group Conference #13

Slide 2

Slide 2 text

All Rights Reserved. Copyright © CRESCO LTD. 2 ࣗݾ঺հ ٢ాক໌ʢΑͩ͠ ·͖͋͞ʣ ܦྺ ࢈ۀܥSE→޿ࠂ୅ཧళ Ӧۀˠݱࡏ .NETɺC#͹͔ͬΓ΍ͬͯͨࢲɻ͍͖ͳΓεϚϗܥͷ෦ॺʹɻ →ϠόΠɺ͓ݺͼͰͳ͍ɻɻɻ Xamarinͷग़ձ͍ ͦΜͳதɺ2014/5/29,30ʹߦΘΕͨde:codeʹࢀՃ →౰࣌XamarinΤόͩͬͨ౉ล༑ଠ͞ΜͷxamarinηογϣϯΛௌߨ →C#ͰεϚϗ࡞ΕΔΜͩʂʂ͔͠΋ΫϩεϓϥοτϑΥʔϜɻ →ࣾ಺Ͱܒ໤׆ಈΛ։࢝ →൒೥΄Ͳࣾ಺ษڧձ΍ΠϕϯτͰܒ໤׆ಈΛͨ݁͠Ռɻɻɻ

Slide 3

Slide 3 text

Xamarin.FormsͰ ΈΜͳͰͯΜ͜ʂ 2015೥10݄3೔ ٢ా ক໌ ୈ̒ճ Japan Xamarin User Group Conference @౦ژ ઌ୺ٕज़ࣄۀ෦

Slide 4

Slide 4 text

All Rights Reserved. Copyright © CRESCO, LTD. 4 ʮΈΜͳͷͯΜ͜ʯͷ͘͠Έ αʔόʔ 18 ɹ/20 50 45 ৘ใরձʗ࿈བྷࢦࣔ Bluetooth πΞʔࢀՃऀ৘ใऔಘ Ի੠௨஌ SMS σʔλೖྗ πΞʔࢀՃऀ ఴ৐һ Ϗʔίϯόοδ ఺ݺઐ༻ iPadΞϓϦ πΞʔ؅ཧऀ

Slide 5

Slide 5 text

All Rights Reserved. Copyright © CRESCO LTD. 5 ΈΜͳͷͯΜ͜ͷཪଆΛ΋ͬͱ஌Γ͍ͨํ͸ SlideShareͰެ։த http://www.slideshare.net/ma-yoshida/xamarinforms-53721105

Slide 6

Slide 6 text

All Rights Reserved. Copyright © CRESCO LTD. 6 ΫϨείͷIoTͷऔΓ૊ΈΛ΋ͬͱ஌Γ͍ͨํ͸ ΫϨείͷIoTಛઃαΠτ΁ʂ http://service.cresco.co.jp/iot/

Slide 7

Slide 7 text

All Rights Reserved. Copyright © CRESCO LTD. 7 ࠓ೔ͷຊ୊ ͢Ͱʹ͋ΔiOSɺAndroidωΟςΟϒͰ ࡞ΒΕͨΞϓϦΛXamarin.FormsʹҠ২ ͢Δ࣮ͬͯࡍͷͱ͜ΖɺͲ͏ͳͷʁ

Slide 8

Slide 8 text

All Rights Reserved. Copyright © CRESCO LTD. 8 Ξϓϩʔν iOS,Android޲͚ͷ௞ି෺݅ݕࡧΞϓϦΛ Xamarin.FormsʹҠ২ͯ͠Έ·ͨ͠

Slide 9

Slide 9 text

All Rights Reserved. Copyright © CRESCO LTD. 9 ௞ି෺݅ݕࡧΞϓϦͷXamarin.FormsԽ ը໘ߏ੒ ɾτοϓϖʔδ ɾࢢொଜҰཡϖʔδ ɾ෺݅Ұཡϖʔδ ɾ෺݅ৄࡉϖʔδ ɾMAPϖʔδ

Slide 10

Slide 10 text

All Rights Reserved. Copyright © CRESCO LTD. 10 τοϓϖʔδ iOS൛ͱAndroid൛ͰUI࢓༷͕ҟͳΔɻ ᶃϝχϡʔ ɹiOSɿλϒόʔίϯτϩʔϧͰը໘Լ෦ʹɻ ɹAndroidɿϋϯόʔΨʔϝχϡʔͰը໘্෦ʹɻ ᶄ஫هจݴ ɹiOSɿ͋Γ ɹAndroidɿͳ͠ ᶃ ᶃ ᶄ Google͞Μ͸ϋϯόʔΨʔϝχϡʔ͕ େ޷͖ͰɺApple͞Μ͸৹͕ࠪݫ͘͠ ಠࣗରԠ͕ඞཁͳΜͯ͜ͱ΋ Α͋͘Δ͓࿩ ͊͞Ͳ͏͠Α͏ɻ

Slide 11

Slide 11 text

All Rights Reserved. Copyright © CRESCO LTD. 11 τοϓϖʔδ<ϝχϡʔ> Xamarin.Formsͷඪ४ίϯτϩʔϧʹ͸TabbedPage͕͋Δ iOS͸͍͍ײ͡ ϋϯόʔΨʔϝχϡʔɾɾɾ Xamarin.Formsඪ४ίϯτϩʔϧͰ ࢓༷Λຬͨͤͳ͍৔߹ɺ࣮૷ෆՄೳʁ ͦΜͳ͜ͱ͸͋Γ·ͤΜɻ ϓϥοτϑΥʔϜ͝ͱʹ ݸผUIΛ࣮ݱ͢Δํ๏ͱͯ͠ɺ Custom Renderer͕༻ҙ͞Ε͍ͯ·͢ɻ

Slide 12

Slide 12 text

All Rights Reserved. Copyright © CRESCO LTD. 12 τοϓϖʔδ 
 ɹɹ ɹɹɹɹ
 ɹɹɹ
 ɹ
 ɹ
 ɹɹɹɹɹɹ
 ɹ
 ɹ
 ɹɹ
 ɹɹɹɹ
 ɹɹ
 ᶃPCLଆͰViewΛఆٛ(TopPage.Xaml) ᶄViewΛ3ͭͷཁૉʹ෼ׂ ɹ1.HambugerMenuView ɹ2.TopScrollView ɹ3.GlobalMenuView ᶅiOS Custom RedererͰHambugerMenuViewΛඇදࣔʹ ᶆAndroid Custom RendererͰGlobalMenuViewΛඇදࣔʹ TopPage.Xaml

Slide 13

Slide 13 text

All Rights Reserved. Copyright © CRESCO LTD. 13 τοϓϖʔδ [assembly:ExportRenderer (typeof(HamburgerMenuView), typeof(HamburgerMenuView_iOS))]
 namespace HogeHoge.iOS
 {
 public class HamburgerMenuView_iOS : ViewRenderer
 {
 public HamburgerMenuView_iOS ()
 {
 }
 /**
 * Delete Hamburger Menu
 */ 
 protected override void OnElementChanged (ElementChangedEventArgs e){
 base.OnElementChanged (e);
 
 if (e.OldElement != null || Element == null) {
 return;
 }
 e.NewElement.Content = null;
 }
 }
 } iOSϨϯμϦϯάΫϥεͰɺassembly:ExportRendererఆٛͰForms HamburgerMenuViewΫϥεϨϯμϦϯάޙɺiOS HamburgerMenuView_iOSΫϥεΛϨϯμϦϯά͢ΔΑ͏ʹઃఆ͠·͢ɻ OnElementChangedͰ͸e.NewElement ͕ Forms ContentView ʹͳΓ·͢ɻ͜ͷContentʹnullΛ୅ೖ͢Δͱɺ಺แ͢ΔΠϝʔδ ͕ফڈ͞Ε·͢ɻ Forms ϨΠΞ΢τͰɺফڈ͢ΔContentΛ಺แ͢ΔContentView ʹߴ͞ࢦఆ͕͋Δͱɺத਎ফڈ͞Εͯ΋ྖҬ͚͕ͩ࢒ͬͯ͠·͍· ͢ɻফڈ͢Δίϯςϯπࣗ਎͕ߴ͞Λܾఆ͢ΔϨΠΞ΢τΛ࡞੒͓ͯ͘͠ඞཁ͕͋Γ·͢ɻ HumburgerMenuView_iOS.cs

Slide 14

Slide 14 text

All Rights Reserved. Copyright © CRESCO LTD. 14 τοϓϖʔδ [assembly:ExportRenderer (typeof(GlobalMenuView), typeof(GlobalMenuView_Droid))]
 namespace HogeHoge.Droid
 {
 public class GlobalMenuView_Droid : ViewRenderer
 {
 public GlobalMenuView_Droid ()
 {
 }
 /**
 * Delete Global Menu
 */ 
 protected override void OnElementChanged (ElementChangedEventArgs e){
 base.OnElementChanged (e);
 
 if (e.OldElement != null || Element == null) {
 return;
 }
 e.NewElement.Content = null;
 }
 }
 } GlobalMenuView_Droid.cs AndroidϨϯμϦϯάΫϥεͰ΋iOSಉ༷ɺassembly:ExportRendererఆٛͰForms HamburgerMenuViewΫϥεϨϯμϦϯάޙɺ Android GLobalMenuView_DroidΫϥεΛϨϯμϦϯά͢ΔΑ͏ʹઃఆ͠·͢ɻ iOSͷΈදࣔ͢Δ஫هจݴʹؔͯ͠΋ɺಉ༷ʹAndroidͷϨϯμϦϯάΫϥεͰඇදࣔʹ͍ͯ͠·͢ɻ

Slide 15

Slide 15 text

All Rights Reserved. Copyright © CRESCO LTD. 15 ʲTips : Ϧιʔεͷ؅ཧʳ ɾEmbedded Resource ϝϦοτ ϓϥοτϑΥʔϜ͝ͱʹϦιʔεΛ༻ҙ͠ͳͯ͘ྑ͍ ϏϧυΞΫγϣϯΛEmbededResource ͱͯ͠ઃఆ͢Δ σϝϦοτ ෳ਺ղ૾౓ʹରͯ͠ɺ֦େɺॖখͷΈରԠɻ ࢖͍Ͳ͜Ζ ݻఆαΠζͷը૾ ը૾͕ॏཁͳཁҼͰͳ͍ΞϓϦ ɾLocal Resource<֤ϓϥοτϑΥʔϜ͝ͱʹϦιʔεΛ؅ཧ> ϝϦοτ ֤ϓϥοτϑΥʔϜͷ࢓༷ʹଇΔ͜ͱͰɺෳ਺ղ૾౓ʹରԠɻ iOS : BundleResource ͱͯ͠ϦιʔεΛఆٛ͢Δ͜ͱͰɺRetina / ඇRetinaΛࣝผՄೳ AndroidɿAndroidResourceͱͯ͠ϦιʔεΛఆٛ͢Δ͜ͱͰɺෳ਺DPʹରԠɻ σϝϦοτ ϓϥοτϑΥʔϜ͝ͱʹ؅ཧ͕ඞཁ ࢖͍Ͳ͜Ζ ͢ͰʹiOS / AndroidͷϦιʔε͕༻ҙ͞Ε͍ͯΔ৔߹ ը૾͕ॏཁͳཁҼͰ͋ΔΞϓϦ

Slide 16

Slide 16 text

All Rights Reserved. Copyright © CRESCO LTD. 16 ʲTips : Ϧιʔεͷ؅ཧʳ ɾEmbedded Resource var image = Xamarin.Forms.ImageSource.FromResource ("HogeHoge.Embeded.common.k_bg_select_area_row.png"); PCLͷC#ίʔυ͔Β࢖༻͢Δ৔߹ ImageSource.FromResource ( ϦιʔεID )ɻϦιʔεID͸ϑΝΠϧͷϓϩύςΟ͔Β֬ೝՄೳɻ XAML͔Β࢖༻͢Δ৔߹ [ContentProperty ("Source")]
 public class ImageResource : IMarkupExtension
 {
 public string Source { get; set; }
 public object ProvideValue (IServiceProvider serviceProvider)
 {
 if (Source == null) return null;
 var imageSource = ImageSource.FromResource(Source);
 return imageSource;
 }
 } ͦͷ··Ͱ͸XAML͔Βݺͼग़͢͜ͱ͕Ͱ͖ͳ͍͕ɺMarkup֦ுΛఆٛ͢Δͱݺͼग़ͤΔΑ͏ʹͳΔɻ ImageResource.cs

Slide 17

Slide 17 text

All Rights Reserved. Copyright © CRESCO LTD. 
 
 ɹɹ
 ɹɹɹ
 ɹɹɹɹ ɹɹɹɹɹ ɹɹɹɹɹɹ
 ɹɹɹɹɹɹɹ ɹɹɹɹɹɹɹɹ
 
 ɹɹɹɹɹɹɹ
 
 ɹɹɹɹɹɹɹɹ
 ɹ
 ɹɹ
 ɹ
 ɹ
 ɹɹ
 ɹ
 ɹ
 ɹɹ ɹɹɹɹɹɹɹɹ ɾɾɾɾ
 17 ෺݅Ұཡϖʔδ Xamarin.Formsඪ४ίϯτϩʔϧͷΈͰ࣮૷

Slide 18

Slide 18 text

All Rights Reserved. Copyright © CRESCO LTD. 18 ෺݅ৄࡉϖʔδ UI෦͸Formsඪ४ίϯτϩʔϧͷΈͰ࣮૷ ϓϥοτϑΥʔϜݸผ࣮૷ͱͯ͠ɺ ɾϝʔϧ࿈ܞػೳΛ Dependency ServiceͰ࣮૷ ɾి࿩࿈ܞػೳΛ Custom RendererͰ࣮૷

Slide 19

Slide 19 text

All Rights Reserved. Copyright © CRESCO LTD. 19 ෺݅ৄࡉϖʔδ<ϝʔϧ࿈ܞػೳ iOS> PCLଆʹϝʔϧػೳͷΠϯλʔϑΣʔεΛ࣮૷ public interface IMailOpener
 {
 void OpenMail(object context, string to, string subject, string body);
 } iOSଆʹDependencyServiceΛܦ༝ͯ͠ݺͼग़͞ΕΔOpenMailϝιουΛఆٛ [assembly: Dependency (typeof (MailOpener_iOS))]
 namespace HogeHoge.iOS
 {
 public class MailOpener_iOS : IMailOpener
 {
 public MailOpener_iOS (){}
 
 public void OpenMail(object context, string to, string subject, string body){
 
 var escSubject = new NSString(subject);
 escSubject = escSubject.CreateStringByAddingPercentEscapes (NSStringEncoding.UTF8);
 
 var escBody = new NSString(body);
 escBody = escBody.CreateStringByAddingPercentEscapes (NSStringEncoding.UTF8);
 
 var mailUrl = string.Format("mailto://{0}?subject={1}&body={2}",to, escSubject, escBody);
 
 var url = NSUrl.FromString (mailUrl);
 if (UIApplication.SharedApplication.CanOpenUrl (url)) {
 UIApplication.SharedApplication.OpenUrl (url);
 }
 }
 }
 } PCLଆͰͷݺͼग़͠ྫ void OnMailButtonClicked(object sender, EventArgs args) {
 ɹɹobject context = MailButton.myContext;
 ɹɹDependencyService.Get().OpenMail(context, myToAddress, mySubject, myBody);
 }

Slide 20

Slide 20 text

All Rights Reserved. Copyright © CRESCO LTD. 20 ෺݅ৄࡉϖʔδ<ϝʔϧ࿈ܞػೳ Android> PCLଆʹϝʔϧػೳͷΠϯλʔϑΣʔεΛ࣮૷ public interface IMailOpener
 {
 void OpenMail(object context, string to, string subject, string body);
 } AndroidଆʹDependencyServiceΛܦ༝ͯ͠ݺͼग़͞ΕΔOpenMailϝιουΛఆٛ [assembly: Dependency (typeof (MailOpener_Droid))]
 namespace HogeHoge.Droid
 {
 public class MailOpener_Droid : IMailOpener
 {
 public MailOpener_Droid (){}
 
 public void OpenMail(object context, string to, string subject, string body){ 
 Intent intent = new Intent(Intent.ActionSend);
 intent.SetType("text/html");
 intent.PutExtra(Intent.ExtraEmail,new String[]{to});
 intent.PutExtra(Intent.ExtraSubject, subject);
 intent.PutExtra(Intent.ExtraText, body);
 
 var currentActivity = context as Activity;
 currentActivity.StartActivity(Intent.CreateChooser(intent, "Send Email"));
 }
 }
 } PCLଆͰͷݺͼग़͠ྫ void OnMailButtonClicked(object sender, EventArgs args) {
 ɹɹobject context = MailButton.myContext;
 ɹɹDependencyService.Get().OpenMail(context, myToAddress, mySubject, myBody);
 }

Slide 21

Slide 21 text

All Rights Reserved. Copyright © CRESCO LTD. 21 ෺݅ৄࡉϖʔδ<ి࿩࿈ܞػೳ iOS> PCLଆʹి࿩࿈ܞ༻ϘλϯΫϥεΛ࡞੒ public class TelephoneButton : Button
 {
 ɹɹpublic TelephoneButton ()
 ɹɹ{
 ɹTextColor = Color.Blue;
 ɹVerticalOptions = LayoutOptions.FillAndExpand;
 ɹHorizontalOptions = LayoutOptions.FillAndExpand;
 ɹFontSize = 12;
 ɹɹ}
 } iOSଆʹΧελϜϨϯμϥʔͰϘλϯΫϦοΫ࣌ͷಈ࡞ΛΧελϚΠζ [assembly:ExportRenderer (typeof(TelephoneButton), typeof(TelephoneButton_iOS))]
 namespace HogeHoge.iOS
 {
 public class TelephoneButton_iOS : ButtonRenderer
 {
 public TelephoneButton_iOS (){}
 protected override void OnElementChanged (ElementChangedEventArgs e)
 {
 base.OnElementChanged (e);
 // ΫϦοΫ࣌ͷಈ࡞ॻ͖׵͑
 UIButton button = this.Control;
 button.AddTarget (OpenTelephone, UIControlEvent.TouchUpInside);
 }
 void OpenTelephone(object sender, EventArgs args){
 UIButton button = sender as UIButton;
 var text = string.Format("telprompt://{ 0}", button.TitleLabel.Text); 
 var urlText = Uri.EscapeUriString (text);
 System.Diagnostics.Debug.WriteLine ("OpenTelephone:{0}",urlText);
 var url = new NSUrl (urlText);
 UIApplication.SharedApplication.OpenUrl (url);
 }
 }
 }

Slide 22

Slide 22 text

All Rights Reserved. Copyright © CRESCO LTD. 22 ෺݅ৄࡉϖʔδ<ి࿩࿈ܞػೳ Android> PCLଆ ి࿩࿈ܞ༻ϘλϯΫϥε public class TelephoneButton : Button
 {
 ɹɹpublic TelephoneButton ()
 ɹɹ{
 ɹTextColor = Color.Blue;
 ɹVerticalOptions = LayoutOptions.FillAndExpand;
 ɹHorizontalOptions = LayoutOptions.FillAndExpand;
 ɹFontSize = 12;
 ɹɹ}
 } [assembly:ExportRenderer (typeof(TelephoneButton), typeof(TelephoneButton_Driod))]
 namespace HogeHoge.Droid
 {
 public class TelephoneButton_Driod : ButtonRenderer
 {
 Activity myActivity;
 string myDialText;
 public TelephoneButton_Driod (){}
 protected override void OnElementChanged (ElementChangedEventArgs e)
 {
 base.OnElementChanged (e);
 // ΫϦοΫ࣌ͷಈ࡞ॻ͖׵͑
 myActivity = this.Context as Activity;
 myDialText = e.NewElement.Text;
 var button = this.Control;
 button.Click += OnClickButton;
 }
 
 void OnClickButton(object sender, EventArgs e) {
 var urlText = Android.Net.Uri.Parse ("tel:" + myDialText);
 var intent = new Intent (Intent.ActionView, urlText);
 myActivity.StartActivity(intent);
 }
 }
 } AndroidଆʹΧελϜϨϯμϥʔͰϘλϯΫϦοΫ࣌ͷಈ࡞ΛΧελϚΠζ

Slide 23

Slide 23 text

All Rights Reserved. Copyright © CRESCO LTD. 23 Mapػೳͱ͔·ͩ·ͩ͋Γ·͕͢ɺɺɺ ͦΖͦΖ·ͱΊ·͢

Slide 24

Slide 24 text

All Rights Reserved. Copyright © CRESCO LTD. 24 ࠓ೔ͷຊ୊ ͢Ͱʹ͋ΔiOSɺAndroidωΟςΟϒͰ ࡞ΒΕͨΞϓϦΛXamarin.FormsʹҠ২ ͢Δ࣮ͬͯࡍͷͱ͜ΖɺͲ͏ͳͷʁ

Slide 25

Slide 25 text

All Rights Reserved. Copyright © CRESCO LTD. 25 UI͸ɾɾɾʁ Native iOS Xamarin.Forms iOS Native Android Xamarin.Forms Android Xamarin.Formsͷඪ४෦඼͚ͩͰ΋͋Δఔ౓࠶ݱՄೳɻ ϓϥοτϑΥʔϜ͝ͱʹಠࣗͷ࢓༷͕͋Δ৔߹͸Custom RendererͰ࣮૷ɻ ಠࣗ࢓༷͕ଟ͍৔߹͸ɺXamarin NativeͰ࣮૷͢Δํ͕ྑ͍৔߹΋ɻ

Slide 26

Slide 26 text

All Rights Reserved. Copyright © CRESCO, LTD. 26 ϩδοΫɺϦιʔε͸ɾɾɾʁ # ػೳ ڞ௨ ݸผ උߟ 1 ϝΠϯϝχϡʔ ʢάϩʔόϧϝχϡʔʣػೳ ݸผ ֤OSͷUXʹै͍ݸผ࣮૷ 2 ը૾ૉࡐ ڞ௨ େ͖ΊͷαΠζը૾Λ४උɺΞεϖΫτൺΛอͪͭͭॖখͯ͠දࣔ͢Δ͜ͱͰڞ௨ԽՄೳ 3 ը໘ϨΠΞ΢τ ΄΅ڞ௨ άϩʔόϧϝχϡʔɾϋϯόʔΨʔϝχϡʔҎ֎͸ڞ௨Ͱ࣮૷ 4 Ϛοϓදࣔػೳʗ ϚοϓΞϓϦ࿈ܞ ൒ʑ Xamarin.Forms.Mapʹͯ΄΅ڞ௨ԽͰ͖͍ͯΔɻ ϚοϓΞϓϦݺͼग़͠෦෼ͷΈݸผ࣮૷ 5 ి࿩ΞϓϦػೳ࿈ܞ ൒ʑ ֤OSి࿩ΞϓϦݺͼग़͠෦෼ͷΈݸผ࣮૷ ̒ ϝʔϧΞϓϦػೳ࿈ܞ ൒ʑ ֤OSϝʔϧΞϓϦݺͼग़͠෦෼ͷΈݸผ࣮૷ ɾը໘ભҠɺ௨৴ɺϏδωεϩδοΫͳͲجຊ͸ڞ௨ԽՄೳʂ ɾి࿩ɺϝʔϧͳͲσόΠεݻ༗ػೳ͸Dependency ServiceͰݸผ࣮૷ʂ ɾXamarin PluginͳͲ͕ॆ࣮ͯ͘͠Δͱݸผ࣮૷͕ෆཁʹͳΔέʔε΋ɻ ɾEnbedded ResourceͰϦιʔε΋ڞ௨Խ͕Մೳɻ UIʹͩ͜ΘΒͳ͍ͳΒXamarin.FormsͰ؆୯ʹ࡞Εͯ͠·͍·͢ʂ

Slide 27

Slide 27 text

All Rights Reserved. Copyright © CRESCO LTD. 27 ڞ௨Խׂ߹͸ɾɾɾʁ UIΛ΄΅ڞ௨Խ͠ɺϩδοΫ΋σόΠεݻ༗ػೳҎ֎͸ڞ௨Խ →໿7ׂ͘Β͍͸ڞ௨ԽͰ͖Δʂ

Slide 28

Slide 28 text

All Rights Reserved. Copyright © CRESCO, LTD. 28 ·ͱΊ ɹɾXamarin.FormsͰ΋ඪ४తͳUIͳΒରԠՄೳɻ ɹɾXamarin.Forms PreviewerͰXAMLϓϨϏϡʔ΋αϙʔτ^^ ɹɾUIಠࣗ࢓༷͕ଟ͍৔߹͸Xamarin.NativeΛݕ౼͢΂͖ɻ <Ϧιʔε؍఺> ɹɾEnbedded ResourceͰڞ௨ԽՄೳɻ ɹɾ͢Ͱʹ֤ϓϥοτϑΥʔϜղ૾౓͝ͱͷϦιʔε͕͋ΔͳΒ ɹɹϓϥοτϑΥʔϜ͝ͱʹ༻ҙ͢Δํ͕͍͍ɻ ʻϩδοΫ؍఺ʼ ɹɾը૾Ճ޻ܥ΍σόΠεݻ༗ػೳΛ͝Γ͝Γ࢖͏΋ͷͰͳ͚Ε͹ ɹɹXamarin.FormsͰ͋Δఔ౓ڞ௨ԽͰ͖Δɻ ʻ࠶ར༻ੑʼ ɹɾFormsͳΒUI͸εΫϥονͱಉ౳ ɹɾΞϧΰϦζϜ͸͋Δఔ౓࢖͍·ΘͤΔ͕ɺC#Ͱॻ͖௚͕͠ඞཁɻ ɹɾͦΕͳΓʹॳظίετ͸͔͔Δ͕ɺอकӡ༻අ༻͸Լ͕Δɻ

Slide 29

Slide 29 text

All Rights Reserved. Copyright © CRESCO, LTD. 29 Xamarin.Forms։ൃͷϓϩδΣΫτମ੍ Xamarin.FormsΛ࢖༻͢Δ͜ͱͰɺඪ४తͳUI΍σόΠεʹґଘ͠ͳ͍ػೳ͸εϚϗະܦݧͰ΋”։ൃ” ͸Մೳͱ͍͑·͢ɻ͔͠͠ɺڽͬͨUI΍σόΠεݻ༗ͷػೳɺͦͷଞϏϧυ΍ϦϦʔεʹؔͯ͠͸ɺͦ ΕͧΕͷOSͷಛੑΛཧղ͢Δඞཁ͕͋Γ·͢ɻ੡඼ϨϕϧͷΞϓϦΛ։ൃ͢Δʹ͸ɺ֤ϓϥοτ ϑΥʔϜͷ։ൃܦݧऀΛΞαΠϯͤ͞Δඞཁ͕͋Γ·͢ɻฐࣾͰ͸ɺ֤ϓϥοτϑΥʔϜ։ൃऀ΋ަ͑ ͯϓϩδΣΫτମ੍Λ૊Ή͜ͱ͕ՄೳͰ͢ɻ ϓϩδΣΫτ Ϛωʔδϟ ITΞʔΩςΫτ Android Developer .NET Developer iOS Developer ։ൃϦʔμʔ

Slide 30

Slide 30 text

All Rights Reserved. Copyright © CRESCO, LTD. 30 ৄ͘͠ฉ͖͍ͨํ͸ɺɺɺ 5/18(ਫ)ʹΤΫηϧιϑτ͞·ɺΫϨείͷ߹ಉओ࠵ͷXamarinϏδωεηϛφʔΛ࣮ࢪ͠·͢ɻ http://service.cresco.co.jp/seminar_event.shtml PepperʹΑΔσϞ΋͋Γ·͢ɻ ͓༠͍߹Θͤͷ্͝ࢀՃ͍ͩ͘͞ɻ ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ɻ