すまべんLite@関西#1

972 views

Published on

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
972
On SlideShare
0
From Embeds
0
Number of Embeds
228
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

すまべんLite@関西#1

  1. 1. すまべんLite@関⻄西 #01Xamarin 2.0 で Android 開発⼊入⾨門シリーズ#1伊勢  シン2013/05/08(Wed) @Fenrir Inc. ⼤大阪本社
  2. 2. シリーズの⽬目標•  Android アプリ開発の、現代の勘所を押さえる– 画⾯面作成:Fragment、レイアウトXML– リソースの⼊入れ⽅方– リークの原因になりやすいコンテキストの取り扱い– その他もろもろ•  Xamarin 2.0を使ってC#を⽣生かした開発– Rxとかもろもろ (asyncまだ使えないっぽいので)– Java苦⼿手なあなたも⼤大丈夫•  最終回では他PFとのソースコード共有を⽬目指す
  3. 3. 想定の対象者•  これまで他のプラットフォームでそれなりに開発してて、Androidアプリの開発をやってみたい⼈人•  Javaに苦⼿手意識識があってAndroid開発に踏み出せなかった⼈人•  本当のはじめての⼈人は、周りに聞きながら。•  僕も Android はちゃんと理理解できているわけじゃないので、勉強しながらです。–  ぼく本来は  iOS アプリエンジニアですし。•  みんなでわかるまで話し合いながらじっくりやる、「Lite」なシリーズを⽬目指しましょう。
  4. 4. ターゲットプラットフォーム•  Xamarin 2.0– Xamarin Studio– Android SDK•  Android 4.0– 最新の環境でやってみるというのが今回の⽬目的の⼀一つなので。– ⾼高速エミュレーター  (HAXM) は⼊入れておきたい。•  さもなくば実機•  これまでのAndoridエミュレータは遅すぎる
  5. 5. スケジュール•  全5回でじっくりまったりを予定– #1 Activity/Fragmentのライフサイクルと  画⾯面遷移・インテント– #2 画⾯面レイアウトとリソース管理理– #3  通信処理理・Twitter タイムラインビューワの開発– #4  もっと Android らしいアプリに(Service/Alarm)– #5 MvvmCross  を使ったコードの共有化•  ざっくりこんな感じでしか考えてないので、進み⽅方次第で前後する可能性があります。
  6. 6. Xamarin 2.0でAndroid開発⼊入⾨門 #1Activity と Fragment とインテント
  7. 7. そもそもの概要おさらい•  Android– みんなご存知スマートフォンOS– 公式の開発環境はJava•  Xamarin 2.0– Xamarin社が開発している、C#/VB.NETでiOS/Android/Macのアプリを作れる。(Monoベース)•  Xamarin.iOS (元MonoTouch)•  Xamarin.Android (元Mono for Android)•  Xamarin.Mac– 無料料の Starter Edition ではコンパイル後のバイナリが32KBまではアプリを書ける。
  8. 8. Androidアプリのプロジェクト構造•  プロジェクトを作成して、⾒見見てみましょう。•  Xamarin Studio を起動•  ファイル→新規→ソリューション
  9. 9. Androidアプリのプロジェクト構造•  C# の Android Application を選んで、新規作成。
  10. 10. Androidアプリのプロジェクト構造•  参照 (Xamarin)–  .NETのライブラリ参照•  Components (Xamarin)–  Xamarinコンポーネントが⼊入る–  クロスプラットフォーム利利⽤用が考慮されたライブラリ•  Assets (Android)–  バイナリのまま扱いたいプログラムを置く•  Properties (Xamarin)–  .NETでおなじみの、AssemblyInfo.csなどが⼊入る。•  Resources (Android)–  Android アプリのリソースを格納。–  drawable に画像、layout にUI定義のレイアウトXML、valuesに定数値のXMLが⼊入る。–  ここに⼊入れたデータにはビルド時にIDが付与されて、そのIDを使ってリソースを参照する。(理理由は仕組みは次回詳細に解説します)
  11. 11. Androidの画⾯面構成•  アプリケーションの画⾯面を表すActivity•  Activityの中に表⽰示されるView– 他のViewをレイアウトするViewGroup•  LinearLayout、RelativeLayoutActivityViewGroup(LinearLayout/RelativeLayout)View View View
  12. 12. ⾒見見直されるActivity•  同じ画⾯面に複数のActivityを突っ込めない– ActivityGroup というものでできたけど、ActivityGroup ⽤用に作った Activity を単体で再利利⽤用するのは⼤大変な困難を伴う。•  Activityを再利利⽤用できないと、タブレットへの移植を考えた時に⼤大変になる。– タブレット対応した Android 3.0 のときに、障害になった。
  13. 13. Fragmentの登場•  Android 3.0 から導⼊入された新しい概念念•  FragmentActivityにFragmentを⼊入れるhttp://developer.android.com/guide/components/fragments.html
  14. 14. Fragmentでよくなったこと•  画⾯面の再利利⽤用性向上– Activityとは別の独⾃自のライフサイクルを持つ– タブレットとスマートフォンで同じFragmentを利利⽤用できる•  Dialogの管理理が良良くなった•  今後はActivityに直接Viewを貼ることはせず、Fragmentを使うべきとされています。– タブを実現するTabHostが⾮非推奨になり、FragmentTabHostに置き換わったりしている。
  15. 15. Fragmentに置きかえよう•  Xamarinのテンプレートで作成するとActivityが1枚のプログラムになっています。– ボタンクリックするとカウントアップしていく。•  まずは、これを  Fragment  におきかえてみましょう。
  16. 16. Fragmentを使えるようにする•  Fragmentを使うには、下記のどちらかが必要– API Level 12 (Android 3.0)以上•  API Level は  Android  のバージョンアップでAPIが増えた時などに加算されている•  対応表はリファレンス上にある。–  http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels– Support Library v4•  API Level が低い端末でも、Fragment  など、後のバージョンで追加された基盤機能を使えるようにする•  Xamarin.Android の標準ライブラリにもラッパーが存在している。
  17. 17. ターゲットプラットフォームのアップグレード•  プロジェクト右クリックしてプロパティ表⽰示•  ビルド/⼀一般のページにあるTarget FrameworkをAndroid 4.0 (Ice Cream Sandwich)にする– API Level は 14 になる。
  18. 18. Support Library の導⼊入•  参照の追加で追加する– 参照フォルダ右クリック→参照アセンブリの編集
  19. 19. Fragmentの作成•  プロジェクト右クリック、追加、新しいファイル
  20. 20. Fragmentの作成•  AndroidからAndroid Fragmentを選択•  MainFragmentと命名
  21. 21. Fragmentの作成•  Fragment の実装– https://gist.github.com/iseebi/5538072•  最低でも下記3つは実装しよう、とリファレンスに書いてある– OnCreate– OnCreateView– OnPause– 今回は  OnCreateView だけで OK
  22. 22. ActivityをFragment対応にする•  つくったFragmentを貼るためのレイアウトを作る– Resources/layout に追加→新しいファイル– Android の Android Layout– MainContainer と命名
  23. 23. ActivityをFragment対応にする•  レイアウトXMLにフラグメントを追加– https://gist.github.com/iseebi/5538072– タグの名前は⼩小⽂文字で fragment•  つくったFragmentをActivityで読み込む。•  Support Libraryを使う場合は、Activityの基底クラスをFragmentActivityにする。
  24. 24. Fragment同⼠士でデータの受け渡し•  Fragmentを使って画⾯面遷移を作ってみます。
  25. 25. SubFragmentの作成•  レイアウトを追加– Sub という名前で追加。– GUIデザイナでライブラリから Text (Medium) を追加
  26. 26. SubFragmentの作成•  プロパティで名前を変更更•  Id のところに@+id/(名前) でつける•  ここではmessageText とした
  27. 27. SubFragmentの作成•  クラスの追加– Android Fragment をSubFragment  という名前で追加– https://gist.github.com/iseebi/5538087
  28. 28. MainFragmentの変更更•  レイアウトの変更更– Main.axml を編集– Button EditTextを配置。•  コードの変更更– https://gist.github.com/iseebi/5538087
  29. 29. Fragmentの画⾯面遷移のポイント•  パラメータはBundleに格納して渡すvar bundle = new Bundle();bundle.PutString("name", NameEditText.Text);var fragment = SubFragment.Instantiate(Activity, "SubFragment", bundle);var transaction = FragmentManager.BeginTransaction();transaction.Replace(Resource.Id.fragment1, fragment);transaction.Commit();Activity.FragmentManager.ExecutePendingTransactions();パラメータを作る遷移先を作る画⾯面上のFragmentを置き換える画⾯面に反映する
  30. 30. Fragmentの画⾯面遷移のポイント•  Bundleに⼊入れたパラメータはArgumentsプロパティに⼊入っている。var name = Arguments.GetString("Name");MessageText.Text = string.Format("Hello! {0}!", name);パラメータを受け取る
  31. 31. インテント•  機能と機能の橋渡しをする仕組み– 共有以外にも「別の機能」に対して呼び出す場⾯面は全部インテント– アプリ内のActivityから別のActivityへ– アプリから別のアプリを起動する– 通知領領域からアプリを起動•  明⽰示的と暗黙的の2種類がある– 明⽰示的:アプリ内での遷移– 暗黙的:データだけを渡して発⾏行行すると、      処理理できるアプリの⼀一覧が表⽰示される
  32. 32. 暗黙的インテントを書いてみる•  Javaのコードを参考に– http://techbooster.org/android/application/8835/•  Standard Activity Actions– http://developer.android.com/reference/android/content/Intent.html– ACTION_VIEW : URLなどを表⽰示– ACTION_SEND : テキストや画像を処理理– ACTION_SENDTO : メール送信– ほか
  33. 33. まとめ•  Activity ではなく Fragment  を活⽤用しよう!•  Andorid は連携機能が強いので、インテントを使うだけでいろいろできます。•  次回はややこしいレイアウトをいろいろ解説します– RelativeLayout / LinearLayout の使いこなし術を紹介します。

×