TIL

Today I learned

ViewPager2へのMigrationでNested scrollが効かない

ViewPager2にMigrateした際、NestedScrollが効かなくなっていたためその対応。 MigrationについてのDocumentは以下。 Migrate from ViewPager to ViewPager2 | Android Developers

Kotlin Coroutines Flowのcombine()とResult型の組み合わせ

Kotlin CoroutinesのFlowを使っていて複数のFlowをまとめるcombine 関数と Result型の組み合わせで躓いたメモ。 環境 Kotlin Coroutines: 1.3.7 combine関数について -> Asynchronous Flow - Kotlin Programming Language Result型について -> Result - Kotl…

一定期間にcloseされたIssueを簡単に見るBookmarklet

TIL

GithubのIssuesを使った案件管理をしているとかで、スプリントごとにどのIssueがcloseになったかを一覧に出すのは少々面倒くさい。 GitHub repository内のIssues一覧の検索機能を使えば細かくフィルターをかけて一覧に出せるので、少々手を加えてBookmarklet…

AndroidプロジェクトでのUnitTest環境をセットアップする

(最近の)Androidのプロジェクトにおいて、新しくUnitTestを書くところまでのセットアップのトラブルシューティングを残しておく。 環境 Android Studio: v4.0 使用しているTest Libraryとversionは以下の通り "org.mockito:mockito-core:2.23.0" "com.nhaarm…

CircleCIからGitHubへのPushする時のToken周りのこと

CircleCIなどCI環境で何かしらのスクリプトを実行し、GitHubのrepositoryにpushしたい/pullしたい時のCircleCI/GitHubの設定周りについてのメモ。 何も設定せずにgit push など書き込み系のコマンドを実行するとThe key you are authenticating with has bee…

RecyclerViewへのitem追加時に java.lang.IndexOutOfBoundsException: Inconsistency detected

RecyclerViewにItemを追加しようと submitList() をすると java.lang.IndexOutOfBoundsException: Inconsistency detected. Invalid view holder adapter positionViewHolder で落ちる時の対応。

puppeteerを使う時のTips

TIL

Headless chrome apiのpuppeteerを触ってみたので躓いたところ等のメモ。 GitHub - puppeteer/puppeteer: Headless Chrome Node.js API

スクロールできないItem数でSwipeRefreshLayoutがうまく動かない時

SwipeRefreshLayoutとRecyclerViewを使って縦に要素を並べてスクロールさせる時を想定している。 要素数が3,4つなどスクロールするには満たない時にSwipeRefreshLayoutのOnRefreshListener.onRefreshが呼ばれないことがあったのでメモ。 RecyclerViewへのア…

ImageView.setImageURI()でviewに反映されない時

setImageURIを使っている時の小メモ。 GitHub - ArthurHub/Android-Image-Cropper: Image Cropping Library for Android, optimized for Camera / Gallery. このlibraryを使っていてカメラで撮影された画像が同じfile名で上書き保存などされる時に対応。

RxJava convert to Kotlin/SAM conversion

RxJavaのコードを含むJava codeをKotlinにconvertしようとした時のメモ。SAM conversionができない例/その対処法など。

Single.fromObservableの挙動

RxJavaを使っているプロジェクトで、ObservableからSingleになんとなく変換して使っているコードを自分の周りでよく見かけていて、自分の理解と違う動きをしているケースがあったので挙動を確認していく。

アイコン付きButtonへのTips

アイコン付きのボタンを実装する機会が度々ある。drawableLeft で文字とは別でアイコンを設置するのではなくアイコンと文字を合わせて真ん中寄せにしたいことが多い。 ViewGroupで囲えば実現できるがもうちょっとスマートにできる方法がないか毎回思うので試…

Kotlin Coroutinesのasync/awaitの挙動を確認してみる

RxjavaのコードをCoroutinesで書き直せるのか?など調べていくうちにCoroutinesでの動き方に曖昧に理解しているところがあったので動かしてみた結果をメモしておく。 Kotlin version : 1.3.31 Coroutines version: 1.2.1

SingleのdoOnSuccessとmapの挙動を確認する

RxJavaのdoOnSuccessとmapの挙動を確認した時のコード。doOnSuccessで加工してもmapには渡らないので気をつける

androidxへのmigrateでConstraintLayout内のlayoutが崩れた時

androidxへmigrateしたことが影響したのかConstraintLayout内でlayoutが崩れたのでメモ。

API24以下でNoSuchMethodError:No static method hashCode

Kotlin 1.3.30を使っていてAPI24以下の端末で java.lang.NoSuchMethodError: No static method hashCode(Z) のエラーが出てcrashすることがあったのでその対応のメモ。

LivedPagedListで件数が0件のときの挙動を制御する

Paging libraryを使ってNetworkからdataをfetchする時、fetchは成功しているが件数が0件をどう検知するかにちょっと悩んだのでメモ。 viewModel imageData = LivePagedListBuilder(factory, config).build() fragment viewModel.imageData.observe(this, Obs…

RetrofitでJson以外のresponseでのMalformedJsonExceptionに対応する

APIがJsonではなく例えばStringなどJsonではない値を返す場合、retrofitのconverterにGSONしか追加していないと以下のエラーが発生する。 com.google.gson.stream.MalformedJsonException: Expected value at line 1 column 6 path そんな時はRetrofitにconv…

CircleCI上でlicences have not been acceptedに対応する

CircleCI上で Failed to install the following Android SDK packages as some licences have not been accepted.のエラーでBuildが失敗する時の対応についてもメモ。他にもいろんな方法があるっぽい…が一例として。 特にCI上で使用しているdocker imageはci…

ICU4JをAndroidで使う時

Unicodeの文字変換を行えるICU4jというライブラリをAndroidで使う時に遭遇したことや対応したことなどのちょっとしたメモです。 一言でいえばここを見れば済む話である。 Unicode and internationalization support | Android Developers 最新versionの63.1…

getComponentsDrawable()がnullになるとき

メモです。 TextView等でdrawableStart/drawableEndを使ってicon等のリソースを設定している場合などで getComponentsDrawable() を使うと大概の場合は特に問題なく動くが、稀にnullが帰ってくる場合がある。(drawableRight/Leftを使っている場合は問題ない…

RxJavaのsubscribeOnとobserveOnの違いを理解したい

今更ながらRxJavaのsubscribeOnとobserveOnの違い、使い分けがわからなかったので理解するときに参照した記事と動かして試したこととのメモです。 こちらの記事を参考にしました。 http://reactivex.io/documentation/operators/subscribeon.html https://gf…

API23以下でも<item>で幅/高さを設定したい

layer-listでdrawableファイルを書く時等で、読み込むiconの表示幅/高さなどを変えたい時のメモ。 具体的には左を右のようにしたい時。 API23以降だとitem要素にwidthとheightが設定できる

VectorDrawableのOS差異

現象についてのメモであり、解決策ではありません。 SVGからVectorDrawable化した時に元画像では空いているはずだった穴が埋まってしまう問題。 qiita.com

GsonでJsonSerializer/JsonDeserializerを使う

Gsonを使ってJavaのObjectとJsonの間をコンバートする際、カスタマイズしたい時があったのでどんなユースケースだったのかとどう書いたかのメモ。 もっと良いやり方がありそうな気がするが作業ログということで。使用しているGson ver: 2.8.1。 Deserialize …

ConstraintLayoutの中のTextViewが欠ける

ConstraintLayoutの中に複数行のTextViewを置いた時、ConstraintLayoutのレイアウトに合わせて折返しされず行末が表示されない問題。 以下の記事と同じ現象で参考にさせてもらいました。 https://stackoverflow.com/questions/46350501/android-constraintla…

Annotation Processingをdebugする(Java Project編)

Annotation Processingを使ってコンバイル時に処理をする際にDebugする方法をまとめておきます。 AbstractProcessorを継承したクラスをDebugモードで実行します。 前提としてIntelliJを使用しています。

Picassoでresizeがうまくいかない

Picassoを使っていて何故か正方形画像のみ、resize/centerInsideがうまく動いてないケースにぶつかった。centerInsideしているのに画像の端が切れてしまいcenterCropのような表示になってしまう感じ。 しかも1回目の読み込みのみ起こるのでおそらくネットワ…

Emulatorのネットワークが不調

何をしてもEmulatorのネットワークの調子が悪かった。 API24のEmulatorでは正常だが一部の端末(自分の環境ではAPI27のようなAPI levelが比較的高いOSのもの)で ずっとネットワークの部分にバツがついていて繋がらない状態になっていた。

BottomSheetDialogのlandscape対応

Android Working with Bottom Sheet - Persistent and Modal Bottom Sheets こちらを参考にBottomSheetDialogを拡張したFragmentを使った時のメモです。 理由などは理解していないところもあるので、現象とこうしたら動いたの一例として参考にしてもらえれば…