Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Android Jetpack : Navigation @ Google I/O 2018報告会in福岡

288 views

Published on

2018年5月19日に開催されたGoogle I/O 2018報告会in福岡でお話した「Android Jetpack : Navigation」の資料だよ♪

Navigationの使い方と、現時点でのハマりポイントを紹介ー

Published in: Engineering
  • Be the first to comment

Android Jetpack : Navigation @ Google I/O 2018報告会in福岡

  1. 1. Android Jetpack :Navigation 〜 2018.5.19 Google I/O報告会in福岡 〜
  2. 2. ● Twitter @fkm ● モケラボ株式会社 代表取締役 ● GDGのメンバーではありません ● もちろんGDEでもありません about:fkm
  3. 3. 本書きました ● 初心者〜中級者向け ● https://www.amazon. co.jp/dp/B075XC9L C5/
  4. 4. ● モバイルアプリの 受託開発 ● 技術情報の 提供・支援 https://tech.mokelab.com ● モケラグッズ販売 about:モケラボ
  5. 5. LINEスタンプあります
  6. 6. Navigation?
  7. 7. Navigation ● アプリ内での画面遷移 ● Fragmentの遷移で実現 ● DeepLinkサポート ● API 14〜
  8. 8. implementation 'android.arch.navigation:navigation-runtime:1.0.0-alpha01' implementation 'android.arch.navigation:navigation-fragment:1.0.0-alpha01' dependencies
  9. 9. つかいかた ● navigation.xmlをつくる ○ いいエディタあるよ! ● アクティビティのレイアウトに NavHostFragmentを貼る ● 遷移イベントをつくる
  10. 10. navigation.xml res/navigation の下にいれる みんな大好きxml
  11. 11. ナビゲーションエディタ
  12. 12. Activityでの設定 androidx.navigation.fragment.NavHostFragment をレイアウトに貼り付ける
  13. 13. Activityでの設定 大事なところ ● app:navGraph="@navigation/nav_main" ○ どのxmlファイルを使うか ● app:defaultNavHost="true" ○ バックボタンのイベントに反応する
  14. 14. イベントの設定 View.OnClickListenerを作るメソッドがある Navigation.createNavigateOnClickListener( R.id.action_top_to_itemList)
  15. 15. イベントの設定 NavControllerを取ってきて、 navigate()を呼ぶ方法もある。 Navigation.findNavController(view) .navigate(R.id.action_top_to_list)
  16. 16. 遷移アニメーション res/animにアニメーションを入れておく
  17. 17. パラメータ nextFragment.setArguments(bundle) で、パラメータをセットするんですよね!
  18. 18. パラメータ navigate()にBundleが渡せる Navigation.findNavController(view) .navigate(R.id.action_top_to_list, bundle)
  19. 19. パラメータ 取得はこれまでと同じ val id = arguments!!.getInt("id")
  20. 20. 型安全なパラメータ Gradle pluginを追加すると、 型安全なパラメータ渡しが できるようになります 時間の都合上、省略
  21. 21. DeepLink URIを見て、適切なフラグメントを 表示する機能を実装したい が、面倒だ。。。
  22. 22. DeepLinkの設定 フラグメントを選んで、DeepLinksの所で +をクリック
  23. 23. DeepLinkの設定 URIには{id}のようにパスパラメータが 設定できる
  24. 24. パラメータ取得 argumentsにStringで入ってる val id = arguments!!.getString("id")
  25. 25. 現時点での制約 ● SharedElement使った遷移はできない? ● トップ部分がBottomNavigationなパターン ○ 子Fragmentはやっぱり自力でaddが必要そう ● まだまだ実装途中な感つよい
  26. 26. まだまだ実装途中な感つよい
  27. 27. Android Studio 3.2 Canary 14で スライドを作ってると。。。 鋭意開発中
  28. 28. よーしAndroidXにするぞ import androidx.appcompat.app.AppCompatActivity 動くはずだよね。。。
  29. 29. よーしAndroidXにするぞ ん?support.v4.app.Fragment? →Jetifierは現時点(2018-5-20)で  動作しないっぽい
  30. 30. DeepLink用IntentFilter <activity> <nav-graph android:value="@navigation/nav_main"/> </activity> これで、IntentFilterが追加されるはず。。。
  31. 31. DeepLink用IntentFilter いけそう
  32. 32. DeepLink用IntentFilter だが、apkにはいない。。。
  33. 33. DeepLink用IntentFilter サンプルにはこんな記述がorz
  34. 34. 参考資料 ● 公式ドキュメント ○ https://developer.android.com/topic/librari es/architecture/navigation/ ● サンプル ○ https://github.com/googlesamples/android -architecture-components
  35. 35. Thanks!

×