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.

Jag201610 API Diffで見るNougat

845 views

Published on

2016年10月26日に発表した「API Diffで見るNougat」だよ!

Published in: Technology
  • Be the first to comment

Jag201610 API Diffで見るNougat

  1. 1. API Diffを 見てみよう モケラボ株式会社 fkm
  2. 2. ● Androidアプリ開発 ● iOSアプリ開発 ● 開発レクチャー ● キャラクター展開 ○ グッズ作ったり
  3. 3. グッズあるよ!
  4. 4. 日本Androidの会 メーリングリスト
  5. 5. https://googledevjp.blogspot.jp/2016/08/android-7-nougat.html Nougat API 24
  6. 6. https://googledevjp.blogspot.jp/2016/08/android-7-nougat.html Nougat API 24 Nougat MR1 API 25
  7. 7. API Diff 24 ↓ 25
  8. 8. https://developer.android.com/sdk/api_diff/25/changes.html http://bit.ly/android-diff-24-25
  9. 9. と、ここまでスライド つくってみて 1つ気づいたことがある
  10. 10. Material Motionのような動き Google Slideじゃ作れない。。。
  11. 11. 差分があるのは15パッケージ ● android ● android.app ● android.app.usage ● android.content ● android.content.pm ● android.content.res ● android.media ● android.os ● android.os.storage ● android.provider ● android.telecom ● android.telephony ● android.util ● android.view ● android.view.inputmethod
  12. 12. android.R.attr XMLの属性が定義してあるとこ いくつかフィールドが追加されている ● int shortcutDisabledMessage ● int shortcutId ● int shortcutLongLabel ● int shortcutShortLabel
  13. 13. android.content.Context 新しい定数追加 String SHORTCUT_SERVICE
  14. 14. android.content.pm パッケージ いくつかクラスが追加されている ● LauncherApps.ShortcutQuery ● ShortcutInfo ● ShortcutInfo.Builder ● ShortcutManager
  15. 15. App Shortcuts!
  16. 16. ん?
  17. 17. これ どっかで 見たことない?
  18. 18. 引用元:https://developer.apple.com/ios/3d-touch/
  19. 19. App shortcuts 対応方法は2種類 ● XMLで指定する ● アプリ起動中に動的に編集
  20. 20. XMLでショートカットを追加 1. AndroidManifest.xmlのActivityに <meta-data>を追加する <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> <meta-data android:name="android.app.shortcuts" android:resource="@xml/shortcuts"/> </activity>
  21. 21. XMLでショートカットを追加 <shortcuts> <shortcut> <intent/> <categories /> </shortcut> </shortcuts> 2. xml/shortcuts.xmlでショートカットを定義
  22. 22. XMLでショートカットを追加 <shortcuts> <shortcut> <intent/> <categories /> </shortcut> </shortcuts> 2. xml/shortcuts.xmlでショートカットを定義 ←ルート要素 ←ショートカットの情報 ←投げるIntent ←おまじない
  23. 23. XMLでショートカットを追加 <shortcut android:shortcutId="compose" android:enabled="true" android:icon="@drawable/compose_icon" android:shortcutShortLabel="短い名前" android:shortcutLongLabel="長い名前" android:shortcutDisabledMessage="無効時のメッセージ"> </shortcut>
  24. 24. アプリ起動中にショートカット追加 例えば、チャットアプリで「この人に送信」ショート カットを作りたい時などに使う
  25. 25. アプリ起動中にショートカット追加 作り方 1. ShortcutManagerを取り出す →getSystemService(ShortcutManager.class); 2. ShortcutInfoを作る 3. manager.setDynamicShortcuts()
  26. 26. アプリ起動中にショートカット追加 2. ShortcutInfoを作る ShortcutInfo shortcut = new ShortcutInfo.Builder(getActivity(), "id1") .setShortLabel("アイコン時の名前") .setLongLabel("ロングタップ時の名前") .setIcon(Icon.createWithResource(getActivity(), R.mipmap.ic_launcher)) .setIntent(it) .build();
  27. 27. ベストプラクティス ● デザインガイドラインに従おう ● 4つまでにしよう ● 説明は短い方が10文字。長い方は25文字。 ● 同じ作業をアプリからでもできるように ○ ショートカットに対応してないホームアプリもあるよ ● updateは意味が同じときのみにしよう ● 動的に追加したものはリストアされないよ
  28. 28. くわしくは https://developer.android.com/preview/shortcuts.html
  29. 29. 定数追加 ● int DENSITY_260 ● int DENSITY_300 ● int DENSITY_340 Android Wear用 「実デバイスがこれに近いから、追加しといたでー」 android.util.DisplayMetrics
  30. 30. Android Wear系 WearableExtenderにメソッド追加 ● setHintDisplayActionInline() ● getHintDisplayActionInline()
  31. 31. API 25のWearエミュレーターは まだ、ない。。。
  32. 32. InputContentInfo という新キャラ commitContent()というメソッドがいろんなクラス/イ ンターフェースに追加されている android.view.inputmethod
  33. 33. Image Keyboard Support
  34. 34. 引用元:https://developer.android.com/preview/image-keyboard.html アニメGIFが 貼れる
  35. 35. ん?
  36. 36. これ どっかで 見たことない?
  37. 37. 引用元:https://developer.apple.com/imessage/
  38. 38. EditTextで対応する必要があります。 コード量が結構あるので https://developer.android.com/preview/image-k eyboard.html をみてね どう実装するの?
  39. 39. API 24 → 25のdiffまとめ 奇抜なdiffは実はありませんでした https://developer.android.com/preview/ api-overview.html に書いてある通りのdiffといった感じ
  40. 40. API Diff 23 ↓ 24
  41. 41. 追加パッケージ ● android.icu.lang ● android.icu.math ● android.icu.text ● android.icu.util ● android.os.health ● android.service.quicksettings ● android.service.vr ● java.util.function ● java.util.stream ※変更のあるパッケージはたくさん
  42. 42. 7.0の新機能は もう ご存知だと思うので。。。
  43. 43. Contextクラス boolean deleteSharedPreferences(String) →指定したSharedPreferenceファイルを 削除する それ、無かったんかい
  44. 44. DatePickerDialogクラス 次のコンストラクタが追加 DatePickerDialog (Context context) それ、無かったんかい →現在時刻でダイアログ作るよ!
  45. 45. みんな大好きFragmentに次のメソッド追加 void onAttachFragment(Fragment) それ、無かったんかい →Fragment in Fragmentで、子Fragmentを貼り 付けようとする時に呼ばれるよ! 引数には、これから貼り付ける子Fragmentが 渡されるよ!
  46. 46. BackupAgentに次のメソッド追加 void onQuotaExceeded(long, long) それ、無かったんかい →バックアップしようとして、容量オーバーだった時 に呼ばれるよ!
  47. 47. GradientDrawableに大量のgetter ● ColorStateList getColor() ● int[] getColors() ● float[] getCornerRadii() ● float getCornerRadius() ● float getGradientCenterX() ● float getGradientCenterY() ● int getGradientType() ● int getShape() ● boolean getUseLevel() それ、無かったんかい
  48. 48. Deprecated テストといえばandroid.testパッケージだよね!
  49. 49. android.testは全滅!
  50. 50. サポートライブラリを使うのが主流 @RunWith(AndroidJUnit4.class) public class ExampleInstrumentedTest { @Test public void useAppContext() throws Exception { // Context of the app under test. Context appContext = InstrumentationRegistry.getTargetContext(); assertEquals("package", appContext.getPackageName()); } } テストはどうなる?
  51. 51. たのしめました?
  52. 52. ● API 23→24の大きな差分はJava 8 ● API 24→25は純粋な機能追加 ● API Diffを見ると、地道な改善の跡が発見でき るよ! ● こっそりDeprecatedになったのもわかるよ! まとめ
  53. 53. モケラを よろしくおねがいします

×