jag201610 api diffで見るnougat
TRANSCRIPT
API Diffを見てみよう
モケラボ株式会社 fkm
● Androidアプリ開発● iOSアプリ開発● 開発レクチャー
● キャラクター展開○ グッズ作ったり
グッズあるよ!
日本Androidの会 メーリングリスト
https://googledevjp.blogspot.jp/2016/08/android-7-nougat.html
NougatAPI 24
https://googledevjp.blogspot.jp/2016/08/android-7-nougat.html
NougatAPI 24
Nougat MR1API 25
API Diff24↓
25
https://developer.android.com/sdk/api_diff/25/changes.html
http://bit.ly/android-diff-24-25
と、ここまでスライドつくってみて
1つ気づいたことがある
Material Motionのような動き
Google Slideじゃ作れない。。。
差分があるのは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
android.R.attr
XMLの属性が定義してあるとこ
いくつかフィールドが追加されている
● int shortcutDisabledMessage● int shortcutId ● int shortcutLongLabel ● int shortcutShortLabel
android.content.Context
新しい定数追加
String SHORTCUT_SERVICE
android.content.pm パッケージ
いくつかクラスが追加されている
● LauncherApps.ShortcutQuery ● ShortcutInfo ● ShortcutInfo.Builder ● ShortcutManager
App Shortcuts!
ん?
これどっかで
見たことない?
引用元:https://developer.apple.com/ios/3d-touch/
App shortcuts
対応方法は2種類
● XMLで指定する● アプリ起動中に動的に編集
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>
XMLでショートカットを追加
<shortcuts> <shortcut> <intent/> <categories /> </shortcut></shortcuts>
2. xml/shortcuts.xmlでショートカットを定義
XMLでショートカットを追加
<shortcuts> <shortcut> <intent/> <categories /> </shortcut></shortcuts>
2. xml/shortcuts.xmlでショートカットを定義
←ルート要素
←ショートカットの情報
←投げるIntent←おまじない
XMLでショートカットを追加
<shortcut android:shortcutId="compose" android:enabled="true" android:icon="@drawable/compose_icon" android:shortcutShortLabel="短い名前" android:shortcutLongLabel="長い名前" android:shortcutDisabledMessage="無効時のメッセージ"></shortcut>
アプリ起動中にショートカット追加
例えば、チャットアプリで「この人に送信」ショートカットを作りたい時などに使う
アプリ起動中にショートカット追加
作り方
1. ShortcutManagerを取り出す→getSystemService(ShortcutManager.class);
2. ShortcutInfoを作る3. manager.setDynamicShortcuts()
アプリ起動中にショートカット追加
2. ShortcutInfoを作る
ShortcutInfo shortcut = new ShortcutInfo.Builder(getActivity(), "id1") .setShortLabel("アイコン時の名前") .setLongLabel("ロングタップ時の名前") .setIcon(Icon.createWithResource(getActivity(), R.mipmap.ic_launcher)) .setIntent(it) .build();
ベストプラクティス
● デザインガイドラインに従おう● 4つまでにしよう● 説明は短い方が10文字。長い方は25文字。● 同じ作業をアプリからでもできるように
○ ショートカットに対応してないホームアプリもあるよ
● updateは意味が同じときのみにしよう● 動的に追加したものはリストアされないよ
くわしくは
https://developer.android.com/preview/shortcuts.html
定数追加
● int DENSITY_260 ● int DENSITY_300 ● int DENSITY_340
Android Wear用「実デバイスがこれに近いから、追加しといたでー」
android.util.DisplayMetrics
Android Wear系
WearableExtenderにメソッド追加
● setHintDisplayActionInline()● getHintDisplayActionInline()
API 25のWearエミュレーターは
まだ、ない。。。
InputContentInfo という新キャラ
commitContent()というメソッドがいろんなクラス/インターフェースに追加されている
android.view.inputmethod
Image Keyboard Support
引用元:https://developer.android.com/preview/image-keyboard.html
アニメGIFが貼れる
ん?
これどっかで
見たことない?
引用元:https://developer.apple.com/imessage/
EditTextで対応する必要があります。
コード量が結構あるので
https://developer.android.com/preview/image-keyboard.htmlをみてね
どう実装するの?
API 24 → 25のdiffまとめ
奇抜なdiffは実はありませんでした
https://developer.android.com/preview/api-overview.htmlに書いてある通りのdiffといった感じ
API Diff23↓
24
追加パッケージ
● 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
※変更のあるパッケージはたくさん
7.0の新機能はもう
ご存知だと思うので。。。
Contextクラス
boolean deleteSharedPreferences(String)→指定したSharedPreferenceファイルを削除する
それ、無かったんかい
DatePickerDialogクラス
次のコンストラクタが追加
DatePickerDialog (Context context)
それ、無かったんかい
→現在時刻でダイアログ作るよ!
みんな大好きFragmentに次のメソッド追加
void onAttachFragment(Fragment)
それ、無かったんかい
→Fragment in Fragmentで、子Fragmentを貼り付けようとする時に呼ばれるよ!
引数には、これから貼り付ける子Fragmentが渡されるよ!
BackupAgentに次のメソッド追加
void onQuotaExceeded(long, long)
それ、無かったんかい
→バックアップしようとして、容量オーバーだった時に呼ばれるよ!
GradientDrawableに大量のgetter● ColorStateList getColor() ● int[] getColors() ● float[] getCornerRadii() ● float getCornerRadius() ● float getGradientCenterX() ● float getGradientCenterY() ● int getGradientType() ● int getShape() ● boolean getUseLevel()
それ、無かったんかい
Deprecated
テストといえばandroid.testパッケージだよね!
android.testは全滅!
サポートライブラリを使うのが主流@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()); }}
テストはどうなる?
たのしめました?
● API 23→24の大きな差分はJava 8● API 24→25は純粋な機能追加● API Diffを見ると、地道な改善の跡が発見でき
るよ!● こっそりDeprecatedになったのもわかるよ!
まとめ
モケラを
よろしくおねがいします