前人未踏の領域へ Androidアプリ開発編

Androidアプリ開発に関する調査メモ置き場。古い記事にはアプリ以外も含まれます。

2022-01-01から1年間の記事一覧

Jetpack Compose:LazyColumnのスクロール位置が先頭に戻ってしまう

内容 Paging3とLazyColmnを使用して一覧を表示しているが、画面遷移して戻るとスクロール位置が先頭に戻ってしまう。どうすれば良いか 補足 以前同じ問題を対処するため以下の記事を書いたが、不完全だったのと個人的により良い方法が見つかったため改めて。…

Jetpack Compose:Snackbarの色を指定する

課題 Jetpack ComposeでSnackbarを表示しようとしたら想定とは違った色で表示された。色を指定するにはどうすればよいか。 対応 SnackbarではColorsで指定した色がデフォルトで使われるのでそれを変更する手もあるのだが、ちょっと加工して使われるので、こ…

Jetpack Compose:BOMによるバージョン指定

内容 Jetpack Compose関連のライブラリのバージョン指定をこれまで個別に行なってきたが、Firebaseと同様にBOM(Bill of Materials)が提供されるようになった。依存関係をカバーしてくれるので早速使っていきたい。 対応 基本となる設定を確認。既に書いて…

Firebase CrashlyticsのエラーがAndroid Studioで参照できるようになった件

内容 Android StudioのElectric Eelから、App Quality Insights で Firebase Crashlyticsに記録された内容が参照できるようになった。 対応 Android StudioにFirebase Crashlyticsで使っているアカウントでログインするだけ。既に別アカウントでログインして…

Android : Compose : TextStyleを効率的に定義する

課題 TextStyleを使って文字コードやフォントサイズ、色などを指定できるが、画面ごとに微妙に変わることがあり、その度にスタイルを作っていくと数が増え過ぎてしまう。どうすればよいか。 回答 TextStyle.copy()を使おう。 実践例 メインで使うテキストカ…

Android: Fragment内のComposeでスクロール位置を復元する

追記 新しい記事を書いたのでこちらをご参考ください。 takerpg.hatenablog.jp 内容 Fragment内に ComposeVIew を作成し、LazyColumn でリストを表示したが、画面遷移から戻るとスクロール位置が元に戻ってしまう。 どうすればよいか。 TODO まず、ComposeVi…

Android: RoomのアノテーションプロセッサをKSPに変更する

内容 Kaptに代わるアノテーションプロセッサとして登場したKSP。Roomが対応しているので適用する。 対応 app/build.gradleを編集する。 変更前 dependencies { val room_version = "2.4.2" implementation("androidx.room:room-ktx:$roomVersion") kapt("and…

Android: LazyColumn(LazyVerticalGrid)にヘッダー、フッターを表示する

内容 LazyColumnで一覧を表示する際にローディングのフッターを表示したい。どうすればよいか。 対応 LazyColumn、LazyVerticalGridなどで一覧を表示する場合、通常は各Scope関数であるitemsに一覧データを渡してアイテムごとに処理を行うが、単にLazyColumn…

Android: Twitterアプリ経由でログインできない(解決済み)

内容 Twitterアカウントでのログインを可能にしているアプリで、Twitterアプリのバージョンを 9.54.0-release.0 の場合に 認証トークンを取得できずにログインできなくなる。 対応 Twitterアプリのバージョンを 9.54.1-release.0 にアップデートする。 感想 …

Android: LazyVerticalGridでPaging3を使えるようにする

追記 https://developer.android.com/jetpack/androidx/releases/paging#1.0.0-alpha19 1.0.0-alpha19ですべてのLazyLayoutに対して利用可能な低レベルの拡張メソッドが提供されるようになっため、以下の対応はすでに不要となっている。 内容 LazyVerticalGr…

Android:desugar_jdk_libsを1.2.0に更新する

内容 com.android.tools:desugar_jdk_libsを1.2.0に更新したところ、以下のエラーに遭遇した。どうすればよいか。 Unsupported desugared library configuration version, please upgrade the D8/R8 compiler 対応 Android Gradle Pluginのバージョンを上げ…

Android:Compose:Modifier.weightについてのメモ

内容 Modifier.weightの使い方について迷った箇所があったのでまとめておく Modifier.weightの仕組み ある範囲内(Row, Columnなど)に並べられたComposableの幅を比率で確保するための仕組み weightを付けなかったComposableはそのまま描写される weightの…

Android:okhttp3で画像データ取得時にエラーが発生する

内容 Coilのバージョンを 1.4.0 から 2.1.0 に上げたところ、一部のバナー画像が表示されなくなった。 調査 エラーは以下のようなもので、レスポンスヘッダーのcontent-disposition に無効なキャラクタが含まれているようだ。filenameの「バナー」の部分だろ…

Android: WebViewで発生したエラー一覧

内容 WebViewでページをロードした際に WebViewClient.onReceivedError で拾ったエラーのリスト。 新しいものを見かけた場合には随時追加したい。 Description errorCode description 内容 -1 ERR_FAILED -1 ERR_HTTP2_PROTOCOL_ERROR サイトに接続できない …

Jetpack Compose : TextFieldにdisabledTextColorを適用するには

内容 TextFieldをdisabledな状態にしたい。どうすればよいか。 対応 enabledパラメータをfalseにする。基本はこれだけで、フォーカスが当たらなくなり、編集不可になる。 // 抜粋 TextField( enabled = false ) 色が変わるようにする enabled=falseになった…

twitter-kit-androidを使ってツイートしようとするとDM送信画面が起動する

内容 アプリからのツイートをtwitter-kit-androidライブラリを使って行っているが、最近TwitterアプリのDM送信画面が起動するようになったので調査する。 調査 TwitterアプリのIntentFilterを確認する ツイートにはIntent.ACTION_SENDを使用しているので、本…

Android: android gradle pluginを7.0.4から7.1.1にアップデートする

内容 少し前からGradle 7.1.1にアップデートしろとの案内が出ていたが、対応できずにいたものをまとめて対応。 同じようなタイミングでターゲットSDKも変えたのでもしかしたらそちらの影響もあるかも。 基本的にはUpgrade Assittantが勝手にやってくれるが、…

次期Android SDKはTiramisuに

Android 9.0 (Pie)以降、SDK Platformに名前がついていなかったが(あったのかもしれないが)Tで復活したようだ。 Tiramisuだそうな。勝手な予想だけど誰かの強い意志が働いてそうな気がするw ちなみにAndroid Studioにもアルファベット順にコードネームが…

Android StudioでViewBindingがRun App後にエラー表示される件

課題 アプリ開発でViewBindingを使っているが、Run Appしてアプリを実行したあとでエディタのViewBindingに関する部分がコンパイルエラー扱いになる場合がある。どうすればよいか。 対応 対応というか解決してないんだけど、とりあえずGradleと同期するとコ…

Android : bindingAdapterPositionとabsoluteAdapterPositionの違い

課題 RecyclerView.ViewHolderのgetAdapterPositionがdeprecatedになったので、getBindingAdapterPositionかgetAbsoluteAdapterPositionのどちらかに変更する必要がある。どちらを選択すればよいか。 結論 bindingAdapterPositionはadapterごとの位置情報を…

Android:Jetpack ComposeでNoto Sans JPフォントを使えるようにする

追記 Issueが解決され、記事になっていた。今後は includeFontPadding=falseがデフォルトで適用されるようになるため 本記事の問題は影響しなくなるだろう。 medium.com 課題 これまでアプリでGoogle FontsからNotoフォントをダウンロードして使っていたが、…