Edited at

Keynote: サポートライブラリのススメ

More than 1 year has passed since last update.


  • @yuichi_araki さんのスライドが上がるまでの参考にどうぞ


発表者


はじめに:バグを見つけたら...


  • b.android.com へご報告を!

  • できるだけスクリーンショットを1枚でいいので送ってください


Support Library


Support Library?


  • 古いバージョンの端末もサポートし続けるためのライブラリが必要

  • 互換性

  • 最近のだと互換性だけでなく、Design Support Libraryみたいなものも

  • 現在20個程度存在

  • 後ろについている -v7 とははなに?


    • そのライブラリがサポートする最小のAPIレベル

    • Not ライブラリ自体のバージョン

    • 複数使う場合は、全部同じバージョンで使って欲しい




support-v4


  • プラットフォーム基本機能のバックポート(後方互換性)

  • 置き換え


    • Fragment, Loaderなど



  • なんとか Compat 系


    • ViewCompat, NotificationCompat など

    • static methodで互換性を保つ



  • Resource を使う機能は入っていない

  • 今のほとんどのライブラリの始祖になっているライブラリ(ほぼ必須のライブラリといえる)

  • どっちのFragmentを使えばいい?


    • android.app.Fragment

    • android.support.v4.app.Fragment


      • こっちのほうを使ったほうがよい

      • bug fix されてる






appcompat-v7


  • バックポート専門

  • Lolipop 以前の端末でもMaterial Designを使うためのライブラリ

  • プラットフォームの進化とともにアップデートされていく

  • 最初から使い続けると互換性的においしい

  • App Compat なんとか、な View を使うべき?


    • AppCompatTextView

    • AppCompatButton

    • ...

    • 使わなくていい

    • ただし、カスタム View を使うときの継承元としては使う




recyclerview-v7


  • ListView や GridViewの置き換えとして有名

  • ListView vs RecyclerView?


    • いま動いてるなら別にListViewを使い続けていいのでは




CardView


  • CardView のマージンがAPIレベルによって違う?


    • Lolipop は elevetion だけど

    • KitKat 以前では 地道な影を付ける努力が...!

    • value と value-v21 で margin/padding を分ける

    • app:cardUseCompatPadding="true" を使う




percent


  • パーセント指定で View をレイアウトできる

  • PercentFrameLayout, PercentRelativeLayout


preference-v7/v14


  • 設定画面を作るためのバックポート

  • PreferenceFragmentComprt

  • たいていは -v7 を使えばいい


palette-v7


  • この色はこの色と使うといいよ、みたいな配色を決めるやつ


customtabs


  • アプリ内ブラウザ→WebView?

  • not WebView

  • Chrome がアプリ内で動く

  • Chrome のメニューカスタマイズなどが可能で、そのアプリのブラウザとして使うことができる


その他


  • サポートライブラリをバージョンアップしたら動かなくなった


    • compileSdkVersion とサポートライブラリのバージョンが揃っているか確認




Design Support Library


Design Support Library?


  • マテリアルデザインで使われるコンポーネント群

  • こちらは追加機能

  • -v7対応


NavigationView


  • DrawerLayout の中で使う

  • ListView や RecyclerView でもいいけど、マテリアルデザインの細かいパディングなどを実装するのが結構面倒

  • NavigationViewがその辺を補完してくれる


TabLayout


  • ViewPager(support-v4) と連携することを想定して作られている


FloatingActionButton


  • 小話:FABの背景の影を付けるのに1週間くらいかかりました...


Snackbar


  • Toast の進化版

  • 最後の show() つけ忘れに注意してね!笑

  • snackbar が出ると自動的にFABが上に逃げる


コーディネーターレイアウト


  • すごい FragmeLayout みたいな

  • あとで詳しく


AppbarLayout, CollapsingToolbarLayout


  • スクロールに合わせてヘッダーを可変させる


ButtomSheetBehavior


  • 新しい!まだリリースされてない!

  • マテリアルデザインのボトムシート コンポーネントの実装

  • Google サンタトラッカー 2015 で実用化されている

  • スライド参照。(すみません、このあたりから駆け足だったのでメモが追いつきませんでした...)


Support Library Internals


サポートライブラリを作る


  • 導入はあとでスライドを参照.(すみません)

  • 開発は IntelliJ で

  • ディレクトリ構造がAndroid Stuioと違うので


CoordinatorLayoutの話


  • あとでスライドを(ry

  • カスタム View で共通の挙動などは Behavior として切り出すといいかも