6年が過ぎた

社会人として6年がすぎ7年目になったので1年の振り返りを記録しておく。 転職して変わらずAndroidアプリ書いてます。

Snackbarのaction部分の文字色をstyle.xmlで変えたい

MaterialComponentではSnackbarのAction部分のtextColorはcolorAccentが使われているが、SnackbarのAction部分のtextColorをcolorAccent以外の色に変更したいときのメモ。 Snackbarを表示時する際 setActionTextColor を使うことで変更は可能だが、style.xml…

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

5年が過ぎた

例によって年度末に一年の振り返りを書いているので今年も思い出して頑張って書く。 前回までのあらすじ 4年が過ぎた - C-FRONT Androidエンジニアとしてのキャリア再出発した1年。技術への焦りをひたすら埋めていた1年だった。

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

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

Code Jam to I/O for Woman 2020 に参加したときのメモ

Code Jam to I/O for Woman 2020に初めて参加した。初めての参加で所々戸惑った点があったのでメモしておく。 codingcompetitions.withgoogle.com

Databindingでcolorかdrawableを条件によって設定したいとき

条件によってviewのbackgroundをcolor resourceかdrawable resourceか変更したいとき backgroundに"@{ContextCompat.getDrawable(context,isGrayBackground ? @color/gray : @drawable/pattern_bg)}" のように記載するとbuildエラーが出る。

バンクーバー生活を体験する

バンクーバーへのワーホリや移住に関して最近耳にするようになって気になっていた。人はなぜ "バンクーバーに移住したい" と思うのか?? 休みを利用して3週間バンクーバーで過ごしてみたので記録を残しておく。

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することがあったのでその対応のメモ。

4年が過ぎた

今更感あるがGWで時間があるので書きのこしておくことにする。1年後見て成長したなと思えるように。 前回までのあらすじ 3年が過ぎた - C-FRONT エンジニアへのキャリアに焦りまくっていたところ今の環境に異動が決まりAndroidエンジニアとしてのキャリアを…

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が設定できる