(これはフィクションです) タブレット向けのすごろくアプリを作ります。デジタルとアナログの融合とかそういう企画らしくてリアルなコマを画面の上に置くらしいです。さいころはアプリのUIをタップして振ります。いつもはエミュレータ上でアプリを動かしな…
まず何はなくともthreetenABPを入れる。 implementation 'com.jakewharton.threetenabp:threetenabp:1.2.3' 時刻表現のフォーマット Java8のDate and Time APIのDateTimeFormatterにはいくつかのフォーマットがすでに登録されている。 DateTimeFormatter (Ja…
project.afterEvaluate のブロックの中なら評価後のすべてのタスクを列挙できる。例えば特定のFlavorのあるタスクの前にしたいことがあるなら project.afterEvaluate { tasks.findAll { ... }.forEach { t -> t.dependsOn(...) } }
今回の前提: implementation "androidx.work:work-runtime-ktx:2.3.1" api "com.google.dagger:dagger:2.26" kapt "com.google.dagger:dagger-compiler:2.26" WorkerはWorkManagerによって生成される。デフォルトではContextとWorkerParametersが渡されて初…
関数androidx.lifecycle.livedataからCoroutineLiveDataというLiveDataを取得できる(CoroutineLiveDataはinternalクラスなので実際見えるのはLiveData )。例えば次のような感じで中断関数を渡してやるとライフサイクルとかとの関係をいい感じにやってくれ…
2020/12/02追記: Activityじゃなくてfragment-testingを使いましょうという感じの記事をかきました akihito104.hatenablog.com 追記ここまで ViewGroupのonLayout()が呼ばれた後でいろいろやるクラスを作ることになったので、ユニットテストを書きながら実装…
github.com クローンしてエミュレータなどでandroidTestを実行してみてください。 なぜ? EspressoのViewActions.click()は内部でGeneralClickActionを使ってクリックアクションを作っている。GeneralClickActionを生成する際にいくつか引数を渡す必要がある…
モチベーション サーバーとは独立した環境でテストを行えるようにしたかった 必要なデータの種類が結構多いのでテストコードの中でデータを作ってDAOからDBにInsertしまくるというのが面倒くさそうだった OkHttpのMockサーバーから返すレスポンスをテストコ…
これです github.com androidx.benchmarkは何となく気になっていたので、冬休みの間の宿題として、数年前に作ったあと放置していたリポジトリをほじくり返してこれに導入してみることにした。何をやっているのかは akihito104.hatenablog.com にだいたい書い…
いつものやつをやります。例によって50音順です。カッコ[]付きは未視聴(録画消化待ち)です。今年は全体的にジャンプのアニメが強かったですね。 トルネの不調に泣かされた年でもあった。ほとんどのアニメを1クール遅れで視聴した*1のだがそのせいか円盤を…
github.com モチベーション BaseKeyframeAnimation.getCurrentKeyframe()は、アニメーションのプログレス(0から1の実数で表されるアニメーションの進捗度合い)の値にあうKeyframeを返すメソッド。このKeyframeはsetProgress()の際にキャッシュされている。…
仕事で作ったクラスの構造がよくなかったのでそのその反省を少しまとめてみる。 Adapterとは別にLayoutManager的なものも作る必要があったので、RecyclerViewの構造を参考にして似たようなものを作ることにした。RecyclerViewをなんとかして使えるようにすれ…
処理時間の性能改善をするとき、いつもはまずどこに伸びしろがありそうかあたりを付けるためにメソッドトレースのFlame Chartを見ている。LottieSampleの場合は大体setProgress()かdrawかそれ以外(プログレスバーとかログ出力)に分かれていて*1、これを見…
これです github.com ChangelogにはMinor performance optimizationと書かれていることからもわかる通り全然大したことない改善なんだけど、今やっているプロジェクトではこういうのも馬鹿にはできないというレベルで厳しいので取り込んでもらえたのがありが…
今回のモチベーション デザイナーさんにアプリのスクショを送ったらlottieのパーツの色が少し濃いように見えるという話になった lottie-android: version. 3.0.7 問題のパーツは、透明度の指定されたレイヤーがいくつか重なっているもので、絵が重なっている…
モチベーション Androidでは画面のパーツは全部のオブジェクトへの参照を持つのでリークさせたくない MVCとかMVPはCやPがVへの参照を持つので、とくにAndroidでは管理をきっちりやらなければならない その一方で、ActivityやFragmentのライフサイクルが複雑…
ある日突然怒られたりするやつです。ライブラリを新しく入れたりアップデートしたときとか。 stackoverflow.com android { compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } kotlinOptions { j…
コールバックがなくて値が変わった時にそのことがわからないようなプロパティを観測可能にしたい。KotlinのChannelの機能を使ってそれっぽい仕組みを作ってみた。Channelは現時点(kotlinx-coroutine 1.1.1)ではExperimental。 Androidで動画や音楽を再生す…
AndroidのValueAnimatorでワンショットのアニメーションを実装していたところ、動いている最中に止めたくなった時に 最初の状態に戻したい 最後の状態まですっ飛ばしたい ということがあって少し考えた。 androidのanimation、cancel呼んだら最初の状態に戻…
Retrofitを使って定義したREST APIのinterfaceは何かで包んでからRepositoryとかに渡すのがいい、という話。Retrofitに限らず何か特定ののREST APIにアクセスするライブラリを使うときにも有効ではないかと思う。そのようにするモチベーションを次の通り述べ…
github.com 曰く、縦書きの時に使うような縦長の記号(二文字以上を繰り返すときの記号など)のために高くなっているらしい。issueを読み進めていくとAndroidならTextView.setIncludeFontPadding(false)を使うといいよ!と書いてある。これを指定することで…
画面に20個ぐらいアニメーションするビューがあってなんとかして60fps出すためにいろいろやったことをメモしておく。 エミュレーターでやってたのが全部悪い(実環境で動かしたらわりとすんなり出た)というオチなので参考になるかはわからない。 前提 Value…
UIテストをやる時にMockWebServerを使ってサーバの挙動をモックしていると、レスポンスをちゃんと待ち構えないとテストが失敗することが稀によくある*1 カジュアルにIdlingResourceを使ってカジュアルに待てるようにしたい テストを書くためのハードルを下げ…
droidkaigiでマルチモジュール関連の発表をたくさん聞いて、やってみたくなったのでやってみている。 github.com データレイヤーを単に外に出すところまではなんとなくできたけどそこから先のところでうまく行かなかったり腑に落ちたり落ちなかったりしてい…
前提 Javaのプロジェクトに徐々にKotlinのコードを増やしていっている Javaのテストコードではmockitoを使ってモックオブジェクトを作成していた テスト対象のクラスに注入するクラスがKotlinに変わった Kotlinのクラスはmockitoではそのままモックできない…
adocで書いていたドキュメントをgradleでpdfにビルドできるように色々やりました。今回のミソはjrubyのgradle pluginを使うとgemを使えるようになるということです。 asciidoctorのプラグインと依存関係のgemを使えるようにするために、次のプラグインをプロ…
かねてより気になっていたoboeのコードラボをやってみた。とりあえず最後まで流してみたという程度で、詳しい動きは追えていない。そこまでのメモということで何卒ご容赦を。 Build a Musical Game using Oboe IllegalStateException: Failed to find Build …
年末、android-ktxをプロジェクトに入れようとして思わぬところで躓いたのでメモしておく。現象としては、Android 5.0以上が動いているエミュレータでは問題ないのに、4.4のエミュレータではアプリが起動するときにクラッシュしてしまうというもので、LogCat…
毎年恒例のやつを今年もやります。タイトルの並び順は50音順です。カッコ[ ]つきのものは録画したけどまだ見てないというやつです。必ず見るのでいつかは外れると思います。 冬クール ヴァイオレット・エヴァーガーデンとよりもいを見て毎週泣くおじさんと化…
ViewPagerの代わりにRecyclerViewを使ってチュートリアルの紙芝居を実装したのだが、進むボタンをN回押してサインアップへ進む画面に行くテストがいつまで経っても終了しない現象が起きた。諸事情によりprintデバッグを使って二分探索的にどこで止まっている…