Potatotips #43 に参加してきました
前回に引き続きブログまとめ枠で参加してきました。
Android Tipsまとめ
以下に各発表者のをまとめていきます。(敬称略)
Annotation Processing by TakuSemba
タイトル通りAnnotation Processingに関する話。 Annotation Processingを導入することで、同じコードを何度も書かなくてよくなります。
Annotation Processingの要素は以下の通り。 - Annotation - Processor
スライドで、あるモデル(Userクラス)のビルダーパターンが例として上がっています。 モデルごとにビルダークラスを書くのは骨が折れますが、Annotationを定義したクラスとProcessorを実装したクラスを用意すれば、あとはよしなにやってくれるというわけです。
サンプルコードも用意しているようなので、興味があれば見て見ると良さそうです。
Kotlinコルーチンで作ってみる画像ローダ by e10dokup
Kotlinのcoroutineを利用してみた話。
そもそもcoroutineとは - 中断・再開が可能な関数 - Kotlin1.1で試験的に実装されている
async(){}.await()
とすると、{}
で囲った内側の処理が完了するまで後続の処理が中断されるようです。
ただ、正直にそのまま使えるかというとそうでもなさそう(今回の画像ロードに関しては)で、拡張関数を定義したりして実装をスッキリさせていました。
できるのならコードはスッキリさせたい派としては、簡潔に書けるのはアドだなと聞いていて思ってました。 ただまだexperimentalなので、まずは標準ライブラリ入りしてくれるのを楽しみにしているしかないですね。
Androidで動画編集アプリの技術選択 by daasuu
Androidでの動画周りの技術に関して一通りまとまっていました。 - エンコード - 動画の撮影 - 動画のプレビュー
よく聞くFFmpegやOpenCV、OpenGLESなど選択肢は幅広いものの、 - どのような用途で利用するか - どの程度の機能が必要なのか - カスタマイズに対する柔軟性 - 導入・学習コスト などなど、要件にあった技術の選択が重要だなと思いました。
OpenGLESと聞くと「うっ、頭が…」となりそうなぐらい(?)学習コストが高そうなイメージですが、そのぶん一通り機能を抑えることができるので、あれしたいこれしたいに応えることが可能になります。 凝った実装を目指すのであれば、MediaCodec & OpenGLESが最良の選択でしょうか。
ViewPagerの遷移アニメーションをカスタマイズする by hkusu
Pagerのアニメーションに関するLTでした。
VidePager
のアニメーションはViewPager.PageTransformer
を実装したクラスを作成して、setPageTransformer()
でsetすることでカスタマイズ可能とのこと。
Qiitaの記事にアニメーションの動作イメージと実装例がいくつも掲載されています。 結構自由にカスタマイズできるようなので、自作アプリで導入してみたいと思いました。
ちょうど最近、業務でActivityの遷移アニメーションについて色々やっていたのですが、activityよりも低コストで導入できそうだなと思いました。 よかったら私の記事もどうぞ(宣伝)
dagger2のSubComponentとdependenciesの使い分け by tsuyoyo
www.slideshare.net
DIライブラリであるDagger2に実装されている、subcomponentとdependenciesをどう使い分けるか?という話。
SubComponentは、あるコンポーネントAに対して、コンポーネントBに@SubComponent
をつけることで親子関係を定義できる。
dependenciesも、SubComponentと同等の機能が提供されるが、SubComponentとは違い複数のcomponentを指定できるので、階層構造を実現したりできる。
SubComponentは親子関係のみという制約があるせいか、どちらかと言えばdagger2初心者の自分でも理解がしやすかったです。ただ、スライドにもある通り、使い所や理解が進むともっと複雑な関係を実現したくなってきてSubComponentでは役不足になるので、dependenciesを使うことになると思います。
QiitaでDagger2に関する記事があるようなので、こちらも見ると良さそうです。