kumamotone’s blog

iOS/Android アプリエンジニアです https://twitter.com/kumamo_tone

potatotips #61 に参加しました (Androidブログまとめ) #potatotips

超遅刻投稿です。申し訳ありません。

potatotips #61Androidブログまとめ枠で参加させていただきましたのブログです。Wantedly さんでの開催。

遅れて参加になってしまったので最初の2本は聞いた内容ではなくスライドを読んで書いてます>< 最近は両OSとものまとめを書いていましたが今回は素直にAndroidトークのみまとめています。

[Android] Clip, Elevation, ViewOutlineProvider

speakerdeck.com

ImageViewを角丸にしたり丸にくり抜いたりとかすることがある。

BitmapTransformation(Picasso/Glide)は簡単に使えるが、transformation animationをつくるのが難しい。Canvasを使ってclipするのはCanvasの知識が必要でなかなかむずい。さらに、これらはelevationでの影がが適切に反映されない。

developer.android.com

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分ぐらいでこなせる量 くっつけて、カメラをつかった物体認識や文字認識が簡単にできた 便利!コードはこちら↓

github.com

[Android] 外部SDKのViewにマスク処理をする方法と罠

speakerdeck.com

f:id:kumamotone:20190515194757p:plain

歌詞表示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にコードがあるので参考にしてください

github.com

[Android] アニメーション実装の新しい選択肢 MotionLayoutが中々便利で期待できそう

speakerdeck.com

MotionLayout便利 最初の状態と最後の状態を制約で指定することでアニメーションをひとつのXMLで実現することができる

とくにすごいのはSwipeとClickのTransitionが指定できることで、これをやるとスワイプやクリックをトリガーにしてアニメションすることもできる

alphaの状態でスライドを作成したが2019/05/09 にbeta1が出たとのこと

[Android] Google Play Consoleの時間指定公開のハマりポイント

speakerdeck.com

通常の公開は公開ボタンをクリックしてからGoogleでアップデート処理があり、その後ストアに反映される。一方、時間指定公開はGoogleでアップデート処理が。名前がわかりにくいが、時間指定公開というのは時限式という意味ではない

時間指定公開した場合、リリーストラックの変更のログが反映されないが、市場公開されているわけではない。公開ボタンを押すまでは市場公開されないので安心するとよい。

[Android] Recommend Widgetを作った話

おすすめ記事を出すView?を作った CTRを計測するためにViewTreeObserverを使用したらしい

[Android] Androidの開発とFlutterの開発を比較してみる

AndroidとFlutterを比較してみる

  • 言語
  • Viewのコード
    • 似てる
  • APIコール
    • 似てる
  • テストコード
    • 似てる
  • アプリサーズ
    • 現在のところ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にコードが上がっている。

github.com

Hello Flutter for Web の方法はGithubにあるがそのままやるとうまくいかない場合もあるのでQiitaとかにもやり方が書いてあったりする。

そのほかの資料

github.com

感想とか

f:id:kumamotone:20190525010702j:plain

AndroidGoogle I/O 後ということで新しいトピックが多くて面白かった。iOS も fromkkさんが Dark Modeを実現するライブラリ を作っていたりして、新しいトピックないのでとか言ってないで自分もなんかやらんとなぁと思いました。