Kotlin
前置き Jetpack Compose for Desktop version 0.2.0 での話です。 Jetpack Compose for Desktop での画像表示の現状 Jetpack compose for Desktop のSDK では 画像を表示する関数 Image() が定義されています。 Image() 関数では、 ImageBitmap, Painter, Im…
fun Bitmap.toByteArray(): ByteArray { val buffer = ByteBuffer.allocate(this.byteCount) this.copyPixelsToBuffer(buffer) return buffer.array() }
github.com 普通のKotlin のコードで表現してねって感じらしい.
暗記とか苦手なので書く。 重要なのは、 android.R.id.content で Activity の乗ってる View を取ってきてそこに表示してる fun Fragment.showSnackbar( text: String, @BaseTransientBottomBar.Duration length: Int = Snackbar.LENGTH_SHORT ) { Snackbar.…
ソリューションはあるけど、拡張関数でシュッと解決してくれるものがググっても出てこなかったので書きました。 ソースコード inline fun <reified T> Gson.fromJson( json: String ): T { return this.fromJson( json, object : TypeToken<T>() {}.type ) } 一番シュッと</t></reified>…
Gradle Task に引数を渡す Gradle Task を実行するときに引数を渡したいときがあると思います。 build.gradle内で完結している場合には、以下のように lateinit var な変数を定義すれば値を渡すことができます。 lateinit var userName: String さて、build.…
基本的には、 Transformations の拡張関数の集合です。 implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.1.0-alpha04" class MainActivityViewModel : ViewModel() { private val source1LiveData = Source1Livedata() // 同じものが流れてき…
Live Data を使ったコードのテストを記述する場合にはメインスレッドで実行しなければいけない Live data をUnit Test であれこれする時には、 MainThread で実行しなければいけないという制限が問題になります。 具体的には、 LiveData の setValue メソッ…
Unit Test 等で lambda 関数 を使用しているところで呼び出しログと呼び出し回数を記録したいことはたまによくあると思います。 そこで、記録できる便利クラスを書いてみました。 機能 呼び出しログの記録 回数の記録と検証(指定された回数呼び出されてなか…
必要そうだったから書いてみた。エラー処理とかないので場所に応じて使うべし。 fun String.toDate(format: String = "yyyy/MM/dd HH:mm"): Date = SimpleDateFormat(format, Locale.JAPAN).parse(this) ex "2019/1/2 3:4".toDate()
ChipGroup Class には 追加されている Chip 一覧を取得できそうな関数が生えてないです。 val chipGroup = // Chip Group への参照を取得する val chipCount = chipGroup.childCount // 2 (0..chipCount - 1) .map { chipGroup.getChildAt(it) as Chip } .ma…
Firebase の Realtime Database 使ってますか? firebase.google.com 問題点 基本的に Callback な作りなため Kotlin Coroutine との相性がよくない Firebase Realtime Database で値を読み取る時には基本的には Callback スタイルなコードを書きます。 Kotl…
アドベントカレンダー Android 初心者 15日目の記事です。 まだ枠が空いているので記事を見た人は登録するか3人の Android エンジニアに送りつけてください。 qiita.com 初心者ということで試してみた記事を書いてみたいと思います。 Android 8 ~ テキスト…
コード val intent = Intent() intent.action = Settings.ACTION_APPLICATION_DETAILS_SETTINGS val packageName = context?.packageName ?: return@setOnClickListener val uri = Uri.fromParts( "package", packageName, null ) intent.data = uri startAc…
Android アプリを作っていて、現在デバッグ実行されているかを確認したいことはたまによくあると思います。 BuildConfig から取得すればいけ感じな。 コード BuildConfig.DEBUG 情報元 stackoverflow.com
Extended FAB を実装するモチベーションはFAB をよりユーザーにわかりやすく実装するため 普通のアイコンだけのFAB だけで実装してましたが、 「アイコンだけでは何をするためのものかすぐに理解して使い始めることができない」という問題が出てきました。 …
Mockito はいいぞ〜 さて、 void なメソッドを mock するにはどうすれば良いのかってのは少しハマったので書いてきます〜 解決方法 doNothing().when(targetMock).targetMethod() 的な感じで実装してくといけました〜。 コードで解説 val keyword = "hello w…
BottomAppBar で menu を表示するためには、以下のメソッド読んであげれば表示できます。 {BottomAppBar への参照}.replaceMenu(R.menu.ResourceFileName)
Fuel には、 mochi、 Kotlin Coroutine といい感じに連携してくれる機能があります。 けど、 Moshiと Kotlin Coroutine を組み合わせていい感じに呼び出せる関数は存在してないです。(まぁ、標準で存在してても依存関係考えたら載せるべきでないのはそう)…
エラーメッセージ java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/databinding/DataBinderMapperImpl; 解決策 dataBinding { enabled = true } databinding の設定を AppModule にし忘れてただけですね.... マルチモジュールで作ってると…
ライブラリの追加をしたら下記のようなエラーが出ました。 そこで、解決策を書いていきたいと思います。 Invoke-customs are only supported starting with android 0 --min-api 26 解決策 以下を追加した Module の Build.gradle へ追記したら解決しました…
Android 3.2 正式リリース && Androidx 1.0 おめでとうございます さて、 Android Studio 3.2 から入ってきた Navigation Architecture Component (NAC) NAC には BottomNavigationView (and DrawerView?) と紐づけ、Fragment の ID と menu の id を一緒に…
状況 以下のようなエラーが出てしまいました... Cause: couldn't make a guess for {Class Name} 解決策・原因 パッケージネームに大文字が混入してたのが原因です。 意外に見つけにくい...
こちらで書いたコードに対してパラメタライズドテストを書いていきます。 kuxumarin.hatenablog.com 環境 testImplementation 'junit:junit:4.12' コード Java で書くときは、Static な感じで書いてたのは companion object にしました。 @RunWith(Parameter…
public fun String.removehtmlTag(): String = this .replace(Regex("<[^>]*>"), "") .replace("\n", "")
任意の長さの文字列をいい感じに省略して 表示することはよくあるかと思います。 そんな時にいい感じに表示する方法です。 方法 <TextView android:layout_height="wrap_content" android:layout_margin="12dp" android:ellipsize="end" android:maxLines="2" tools:text="雑な文字列雑な文字列雑な文字列雑な文字列雑な文字列雑な文字列雑な文字列雑な文字列雑な文字列雑な文字列雑な文字列雑な文字列雑な文字列雑な文字列雑な文字列雑な文字列" /></textview>
症状 どこもおかしくないはずなのに、新規で追加した Android Module で定義されている Class を参照しようとすると "Unresolved Refernece " って出てきてツラミでした。 また、 Android Studio では普通に 入力補完されます。 なのに、ビルドすると上記の…
はじまり Android のアプリを作成していて、 ユーザーに画像を一枚選択してもらい、その画像に対してあれこれしたい。みたいな時があるかと思います。そんなときのための記事です。 プログラムの流れの解説 開きたい画像を選択させる Intent を飛ばす ユーザ…
class SSIDManager{ fun GetSSID(ApplicationContext:Context): String{ val wifiManager = ApplicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager if(!wifiManager.isWifiEnabled) return ""; val connectInfo = wifiManager.connecti…