More Related Content Similar to Xamarin ~ iOS/Android/Windows アプリをC# で作ろう~
Similar to Xamarin ~ iOS/Android/Windows アプリをC# で作ろう~ (20) More from Fujio Kojima (20) Xamarin ~ iOS/Android/Windows アプリをC# で作ろう~27. @Override
public void onClick(View v) {
switch(v.getId()){
case R.id.button1:
// 1番目のボタンが押されたときの処理
break;
case R.id.button2:
// 2番目のボタンが押されたときの処理
break;
}
}
}
public class MyActivity extends Activity
implements OnClickListener {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
View showButton = findViewById(R.id.button1);
showButton.setOnClickListener(this);
}
31. マシン OS iOS アプリ開発 Android アプリ開発
Xamarin Studio Visual Studio +
Xamarin プラグイン
Xamarin Studio Visual Studio +
Xamarin プラグイン
PC Windows
× ○
(要 Mac 上の
Xamarin.iOS
Build Host)
○ ○
Mac Mac OS
○ × ○ ×
Windows
○ ○
(要 Mac 上の
Xamarin.iOS
Build Host)
○ ○
62. using Cirrious.MvvmCross.ViewModels;
namespace MvvmDemo.Core.ViewModels
{
public class FirstViewModel : MvxViewModel
{
int price = 0;
public int Price
{
get { return price; }
set {
price = value;
RaisePropertyChanged(() => Price );
RaisePropertyChanged(() => TaxInclusivePrice);
}
}
int tax = 8;
public int Tax
{
get { return tax; }
set {
tax = value;
RaisePropertyChanged(() => Tax );
RaisePropertyChanged(() => TaxInclusivePrice);
}
}
public int TaxInclusivePrice
{
get { return (int)(Price * (1.0 + Tax / 100.0)) ; }
}
}
}
65. if (rootFrame.Content == null) {
//rootFrame.Navigate(typeof(MainPage), e.Arguments);
var setUp = new Setup(rootFrame);
setUp.Initialize();
var start = Cirrious.CrossCore.Mvx.Resolve
<Cirrious.MvvmCross.ViewModels.IMvxAppStart>();
start.Start();
}
72.
public override bool FinishedLaunching (UIApplication app, NSDictionary options)
{
_window = new UIWindow (UIScreen.MainScreen.Bounds);
var setup = new Setup(this, _window);
setup.Initialize();
var startup = Mvx.Resolve<IMvxAppStart>();
startup.Start();
_window.MakeKeyAndVisible ();
return true;
}
73. public override void ViewDidLoad()
{
View = new UIView(){ BackgroundColor = UIColor.White};
base.ViewDidLoad();
if (RespondsToSelector(new Selector("edgesForExtendedLayout")))
EdgesForExtendedLayout = UIRectEdge.None;
var priceLabel = new UILabel(new RectangleF(10, 10, 300, 40));
priceLabel.Text = "Price";
Add(priceLabel);
var priceTextField = new UITextField(new
RectangleF(10, 50, 300, 40));
Add(priceTextField);
var taxLabel = new UILabel(new RectangleF(10, 90, 300, 40));
taxLabel.Text = "Tax (%)";
Add(taxLabel);
var taxTextField = new UITextField(new RectangleF(10, 130, 300,
40));
Add(taxTextField);
var taxInclusivePriceLabel = new UILabel(new RectangleF(10, 170,
300, 40));
Add(taxInclusivePriceLabel);
var set = this.CreateBindingSet<FirstView,
Core.ViewModels.FirstViewModel>();
set.Bind(priceTextField ).To(vm => vm.Price );
set.Bind(taxTextField ).To(vm => vm.Tax );
set.Bind(taxInclusivePriceLabel).To(vm => vm.TaxInclusivePrice);
set.Apply();
}
83. namespace MvvmDemo.Core.Converters
{
public class PriceValueConverter : MvxValueConverter<int, string>
{
protected override string Convert(int value, Type targetType, object
parameter, CultureInfo culture)
{
return string.Format("{0:#,0} 円", value);
}
protected override int ConvertBack(string value, Type
targetType, object parameter, CultureInfo culture)
{
value = ToDigitText(value) ?? "0";
int result;
return int.TryParse(value, out result) ? result : 0;
}
string ToDigitText(string text)
{
var stringBuilder = new StringBuilder();
foreach (var character in text) {
if (char.IsDigit(character))
stringBuilder.Append(character);
}
return stringBuilder.ToString();
}
}
}
84. namespace MvvmDemo.WindowsStore.NativeConverters
{
public class NativePriceValueConverter : MvxNativeValueConverter<PriceValueConverter> {}
}
<Application
x:Class="MvvmDemo.WindowsStore.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:MvvmDemo.WindowsStore"
xmlns:nativeConverters="using:MvvmDemo.WindowsStore.NativeConverters">
<Application.Resources>
<ResourceDictionary>
<nativeConverters:NativePriceValueConverter
x:Key="Price"></nativeConverters:NativePriceValueConverter>
</ResourceDictionary>
</Application.Resources>
</Application>
<TextBox FontSize="64“
Text="{Binding Price, Mode=TwoWay, Converter={StaticResource Price}}" />
85. var set = this.CreateBindingSet<FirstView, Core.ViewModels.FirstViewModel>();
set.Bind(priceTextField ).To(vm => vm.Price ).WithConversion("Price");
set.Bind(taxTextField ).To(vm => vm.Tax );
set.Bind(taxInclusivePriceLabel).To(vm => vm.TaxInclusivePrice).WithConversion("Price");
set.Apply();
89. Xamarin
XLsoft エクセルソフト
Xamarin (ザマリン) ホーム - C# と .NET で iOS, Android (アンドロ
イド), Mac (マック), Windows アプリを開発
Xamarin 価格
Hello, iPhone 初めての Xamarin.iOS アプリケーション開発 - 入門ガ
イド
Hello, Android 初めての Xamarin.Android アプリケーション開発 -
入門ガイド
90. Xamarin for Visual Studio 概説
Visual Studio で iOS/Android アプリが書ける Xamarin を試してみた(iOS 編)
Visual Studio で iOS/Android アプリが書ける Xamarin を試してみた(Android 編)
インサイド Xamarin
Xamarinを構成するソフトウェア。その主要な10要素とは?
Xamarinの基盤となっている「Mono」と、C#コンパイラ「mcs」
Xamarinの基盤「Mono」のmonoランタイムとクラスライブラリ
Mono のモバイル化の流れ ― Xamarin.iOS/Xamarin.Androidの誕生
Xamarin.iOS の仕組みとアプリケーションの構成
Xamarin.iOS で使用するライブラリ
91. N plus 1 Videos Of MvvmCross ·
MvvmCross/MvvmCross Wiki
Xamarin - マルチプラットフォーム MVVMフレーム
ワーク「MvvmCross」を使う - Qiita
Xamarin+MvvmCrossでアプリ開発をはじめる準備
2014年3月版 - Qiita