potatotips #61 に参加しました (Androidブログまとめ) #potatotips
超遅刻投稿です。申し訳ありません。
potatotips #61 のAndroidブログまとめ枠で参加させていただきましたのブログです。Wantedly さんでの開催。
遅れて参加になってしまったので最初の2本は聞いた内容ではなくスライドを読んで書いてます>< 最近は両OSとものまとめを書いていましたが今回は素直にAndroidのトークのみまとめています。
[Android] Clip, Elevation, ViewOutlineProvider
ImageViewを角丸にしたり丸にくり抜いたりとかすることがある。
BitmapTransformation(Picasso/Glide)は簡単に使えるが、transformation animationをつくるのが難しい。Canvasを使ってclipするのはCanvasの知識が必要でなかなかむずい。さらに、これらはelevationでの影がが適切に反映されない。
ViewOutlineProviderというのを使う手があって、これを使うと elevation もうまく反映されている。ただしAPI 21+。簡単にclipやtransformができる。
[Android] CameraXとMLKitの関係や如何に
www.slideshare.net
CodelabsでCameraXとFirebase MLKitをさわった
Camera2では全部コールバックで順序関係あり、しかも画面のライフサイクルい依存しているのがつらかった Camera Xは設定さえすればLifecycle-awareである 便利!
Firebase MLKitではシンプルなインターフェイスで物体認識や文字認識ができる
Codelabsはそれぞれ30〜60分ぐらいでこなせる量 くっつけて、カメラをつかった物体認識や文字認識が簡単にできた 便利!コードはこちら↓
[Android] 外部SDKのViewにマスク処理をする方法と罠
歌詞表示Viewの上下にグラデーションをかけたい ただし、歌詞表示Viewは外部SDKのもので手を入れることはできない
ViewGroup#dispatchDraw
で子Viewの描画をフックすれば子Viewにエフェクトがかけれそう ただし super.dispatchDraw(canvas)
のあとに単に canvas にマスク処理するのはすでに後ろのViewがcanvasに描画されているためNG
オフスクリーンバッファ(ViewGroupと同じ大きさのBitmapとCanvasを用意)すればよい
ViewGroup#dispatchDraw で オフスクリーンバッファをクリア→オフスクリーンバッファに子Viewを描画→オフスクリーンバッファを加工(LinearGradientとPorterDuffを使う)→オフスクリーンバッファの内容をcanvasに描画 というようにすればよい
罠として、対象のViewがalphaを持っている場合はそのalpha値が反映されてしまい、意図しないエフェクトになってしまうことがあるので注意
Githubにコードがあるので参考にしてください
[Android] アニメーション実装の新しい選択肢 MotionLayoutが中々便利で期待できそう
MotionLayout便利 最初の状態と最後の状態を制約で指定することでアニメーションをひとつのXMLで実現することができる
とくにすごいのはSwipeとClickのTransitionが指定できることで、これをやるとスワイプやクリックをトリガーにしてアニメションすることもできる
alphaの状態でスライドを作成したが2019/05/09 にbeta1が出たとのこと
[Android] Google Play Consoleの時間指定公開のハマりポイント
通常の公開は公開ボタンをクリックしてからGoogleでアップデート処理があり、その後ストアに反映される。一方、時間指定公開はGoogleでアップデート処理が。名前がわかりにくいが、時間指定公開というのは時限式という意味ではない
時間指定公開した場合、リリーストラックの変更のログが反映されないが、市場公開されているわけではない。公開ボタンを押すまでは市場公開されないので安心するとよい。
[Android] Recommend Widgetを作った話
おすすめ記事を出すView?を作った CTRを計測するためにViewTreeObserverを使用したらしい
[Android] Androidの開発とFlutterの開発を比較してみる
AndroidとFlutterを比較してみる
[Android] Flutter 1.5 Features(Overview+Alpha)
Flutter 1.5 の新機能。 Dart 2.3、バグフィックス、Material & Cupertio widget sets、アプリ課金(in-app purchases)サポート、Flutter for Web。
Flutter for Webは現在Technical Previewという状態で、Githubにコードが上がっている。
Hello Flutter for Web の方法はGithubにあるがそのままやるとうまくいかない場合もあるのでQiitaとかにもやり方が書いてあったりする。
そのほかの資料
感想とか
Android は Google I/O 後ということで新しいトピックが多くて面白かった。iOS も fromkkさんが Dark Modeを実現するライブラリ を作っていたりして、新しいトピックないのでとか言ってないで自分もなんかやらんとなぁと思いました。