Android

Kotlin 2.0 で Explicit backing fields (Experimental) を使う

いないお部屋のセッションでバッキングフィールドの話されている雰囲気を感じたけれど Kotlin 1.7.0 で入ろうとして入らなかった記憶がありますね #DroidKaigi— バトルプログラマー柴田智也?uwu=true (@tomoya_shibata) 2024年9月12日 ふと思い出して、Droid…

入れ子関係の Fragment で、親 Fragment ではなく最も祖先にあたるルートの Fragment を取得する

親の Fragment は requireParentFragment で取れるけれど最も祖先のを取る、requireRootFragment みたいなのって無いんだっけ?— バトルプログラマー柴田智也 (@tomoya_shibata) 2023年12月13日 サッとドキュメントを見ていたところ多分なかったので require…

AndroidManifest の package 属性による名前空間宣言が廃止される

android-developers.googleblog.com Android Studio Chipmunk が Stable になったので手元環境を更新。 適当なプロジェクトを開くといつもの、 Project update recommended Android Gradle Plugin can be upgraded." これが表示されるので進めたところ、Andr…

M1 Mac 上の Android Studio Bumblebee で Android Emulator が起動しない

M1 Mac 上の Android Studio Bumblebee で Android Emulator を起動しようとすると Connecting to the Emulator のメッセージが表示されて先に進まない状態になり、エミュレーターが使えなくなってしまった。 Bumblebee ではAndroid Studio のツールウィンド…

Android で文字列選択時に表示される Menu に任意の Item を追加する

developer.android.com MainActivity.kt import android.os.Bundle import android.view.ActionMode import android.view.Menu import android.view.MenuItem import android.widget.TextView import android.widget.Toast import androidx.appcompat.app.Ap…

JCenter が2021年5月1日にシャットダウンすることになったので Android アプリエンジニア観点でメモをまとめた

シャットダウンが延期されました 読み取り専用として存続します JCenter のシャットダウンについては2022年2月1日へ延期になりました。 https://jfrog.com/blog/into-the-sunset-bintray-jcenter-gocenter-and-chartcenter/ UPDATE: To better support the c…

MockK 1.10.3 は JDK 11+ 向け、1.10.3-jdk8 は JDK 8 向け

github.com github.com 1.10.3 のリリースノートを確認してバージョンを更新したらテストが落ちたので、Issue を見るとこれに当たった。 github.com When running with jdk8 you should use version 1.10.3-jdk8; 1.10.3 only supports jdk11 and above. The…

Android プロジェクトの DataBinding で使っているリソースが AndroidLint で Unused Resources として誤検知される問題を回避する

Android プロジェクトで使っていないリソースファイルをリストアップしたい場合、 Android Studio の機能を使ってShift キー2回連打からの [Analyze -> Run Inspection by name -> Unused resources] で Action を発動させる AndroidLint を走らせて結果を確…

androidx.work.Data に詰め込んでいいのは 10KB まで

結論 Q.10KB を超えるとどうなる A.IllegalStateException を吐く 詳しく Jetpack WorkManager を使った処理の中でやり取りしたいデータを詰めるとき、こんな風にする。 // https://developer.android.com/reference/kotlin/androidx/work/package-summary#w…

ColorStateList はベストマッチではなく最初にマッチした色が適用される

selector タグを使って ColorStateList をつくるとき、次のような定義は期待通りに色が切り替わってくれる。 <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true"> <color android:color="@android:color/holo_blue_dark" /> </item> </selector>

Android で内部クラスを DataBinding しているときクラスのパッケージを移動すると参照が壊れる

たとえばこんな具合に、あるクラスの内部クラスを DataBinding する Acitivty と XML レイアウトがあるとする。 import android.os.Bundle import androidx.appcompat.app.AppCompatActivity import androidx.databinding.DataBindingUtil import com.tomoya…

FragmentPagerAdapter を軽く眺めた

FragmentPagerAdapter を眺めてみたので、気付きポイントをメモする。 今回見たのは androidx.fragment:fragment:1.0.0 に同梱されているもの。 android.googlesource.com 冒頭のクラスのコメントで、ViewPager には ID が必須ですよ、という説明がある。 * <p></p>…

DroidKaigi 2019 DAY.02 自分ツイートまとめ

起床 ViewPager っぽいけれど Fragment 用意するほどでもないときは RecyclerView と PagerSnapHelper の組み合わせでいいよね、と思っていたところにそれを実装した ViewPager2 が月面から降ってきた— バトルプログラマー柴田智也乙倉とよしのんと結婚した …

DroidKaigi 2019 DAY.01 自分ツイートまとめ

起床 Android Studio 3.3.1 が出たのでアップデートしてから家を出た。 "Hopefully it includes a fix for slow Kotlin file editing!"オッAndroid Studio 3.3.1 released : androiddev https://t.co/z4eOT83Nyy— バトルプログラマー柴田智也乙倉とよしのん…

ViewPager2 1.0.0-alpha01 を使うサンプルを書いた

このエントリはVersion 1.0.0-alpha01 に基づいて記述しています。 今朝、androidx.viewpager2:viewpager2 が公開された。 developer.android.com 従来の ViewPager は PagerAdapter を使って Fragment の表示をシームレスに切り替えられものだった。それに …

Android アプリ の DI コンテナとして KOIN を使う理由とちょこっとした紹介

たまには飯テロじゃない画像をトップにしようと思いました。 (土善旅館のはなちゃんです) さて、私が Android アプリケーションを作るときの DI コンテナとして、最近は Kotlin で書かれた、Kotlin のために提供される KOIN という DI コンテナを好んで使…

Kotlin Coroutines におけるリトライの実現方法を2つ考えてみる

台湾まぜそば、おいしいですよね。名古屋飯だそうです。台湾は? つい先日、友人とのやりとりで Kotlin Coroutines を使うときにどのようにリトライを行うかについて深く考えていなかったという気付きがありました。 ということで、「Android アプリで画面の…

mastodon クライアント Shibadoon β ver 0.2.0 をリリースしました!

Shibadoon β ver 0.2.0 をリリースしました! 基本機能の強化 永らくお待たせしていました。 以下の基本的な機能を実装いたしました。 トゥートの投稿(画像 / 動画付き投稿は未対応) トゥートの詳細画面 アカウントの詳細画面 フォローの登録 / 解除 NSFW …

mastodon クライアント Shibadoon β をリリースしました

あなたの mastodon 生活をより便利にする mastodon クライアント Shibadoon β をリリースしました。120円です。β のくせに。 こだわってるといつまでたっても出せないという天の声を聞いたので、とりあえず出すことにしました。 ので、「様々なことを理解で…

CA.apk #2 に行ってきました

きたよ! #ca_apk pic.twitter.com/JvwbM1behq— バトルプログラマー柴田智也 (@tomoya_shibata) 2017年4月20日 CA.apk とは サイバーエージェントのメディアサービスを担当しているAndroidエンジニアによる勉強会です。 今回はじめての参加でした。 CA.apk #…

Kotlin x RxJava x FragmentPagerAdapter で Subscription を適切に管理する #Android #Kotlin

結論 RxJava で Subscription が帰ってくる処理を書くときは CompositeSubscription に集めて unsubscribe (購読解除)しましょう。 unsubscribe(購読解除)した CompositeSubscription を再利用したいときは、新しいインスタンスが必要になります。 今回…

Kotlin で Android-ObservableScrollView を利用したら IllegalArgumentException に遭遇した話 #Android #Kotlin

Android-ObservableScrollView という、パララックスなスクロール UI を実現するためのライブラリがあります。 github.com このライブラリを利用して、ObservableScrollViewCallbacks を継承した Activity(Kotlin で定義)を作ると、画面をタップしたときに…

Color.parseColor に短縮形の16進数カラーコードが食わせられなかったのでカラーコードを正規化するコード書いた #Android #Kotlin

Layout や Widget に対して背景や文字列の着色をしようとした場面で # から始まる短縮形16進数カラーコード(#333 とか #fff)を Color.parseColor に食わせた結果を設定したのだが色が付くどころか文字列すら表示されなくなってアレって思ってログ見たっけ …

Android Activity Transitions で java.lang.IllegalStateException エラー沼に嵌まった話

結論 遷移先でも遷移元でもスクロール要素(RecyclerView や ScrollView など)の中の要素に android:transitionName を設定しているのならば、スクロール要素 には android:transitionGroup="true" を設定していないと稀に良くしぬ CoordinatorLayout と Ne…

Google の Espresso を使おうとしたら Conflict with dependency エラーが起きたので解決した話

Google の UI テストツール Espresso を利用する場合に build.gradle に記述するべき内容は以下のように提示されています。(2016年6月25日時点のもの) androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.1' developer.android.com…