画像読み込みライブラリ「COIL」

Glide や Picasso のような画像読み込みライブラリです。

COroutine
Image
Loader

の略だそうです。

以下の特徴を持っており、ナウい感じです。

- 拡張関数、ラムダなどKotlinの持つ機能を活用。
- コルーチンを利用。
- ディスクキャッシュとストリームバッファリング機能。
- androidx.lifecycle に対応。
- 軽量。
- R8対応。ルール不要。

👉 Introducing Coil: Kotlin-first image loading on Android 

記述例です。


// To load an image into an ImageView, use the load extension function.
imageView.load("https://www.example.com/image.jpg")

// Coil supports urls, uris, resources, drawables, bitmaps, files, and more.
imageView.load(R.drawable.image)

imageView.load(File("/path/to/image.jpg"))

imageView.load(Uri.parse("content://com.android.externalstorage/image.jpg"))

// Requests can be configured with an optional trailing lambda.
imageView.load("https://www.example.com/image.jpg") {
    crossfade(true)
    placeholder(R.drawable.image)
    transformations(CircleCropTransformation())
}

// Custom targets can be created using lambda syntax (onStart and onError are optional).
Coil.load(context, "https://www.example.com/image.jpg") {
    target { drawable ->
        // Handle the successful result.
    }
}

// To get an image imperatively, use the get suspend function.
val drawable = Coil.get("https://www.example.com/image.jpg")

👉 GitHub - coil-kt/coil: Image loading for Android backed by Kotlin Coroutines. 

パフォーマンスを Glide や Picasso と比較した記事がありますが、まあまあのようです。

Coil is a new library, so its performance may increase in the next versions. We are comparing it with mature libraries, so let’s see how it evolves.

Coil は新しいライブラリであるため、次のバージョンでパフォーマンスが向上する可能性があります。成熟したライブラリと比較しているので、どのように進化するか見ておきましょう。

👉 Coil vs Picasso vs Glide: Get Ready… Go! - ProAndroidDev 

ちなみに、必要環境は以下。

- AndroidX
- Min SDK 14+
- Compile SDK: 28+
- Java 8+

今後に期待できますかね。


「Android 10」のバージョンの参照の方法

「Android 10」は、日本時間今朝早朝に3:00頃に更新されていました。



バージョンナンバーについては、内部的にどう参照されるべきなのか。

今回も吐かせてみます、コードから。


for (field in Build.VERSION_CODES::class.java.declaredFields) {
  field.isAccessible = true
  Timber.d(field.get(this).toString() + " -> " + field.name)
}
Timber.d("RELEASE : " + Build.VERSION.RELEASE)
Timber.d("SDK     : " + Build.VERSION.SDK_INT)

👉 Android OS バージョンのコードネームを取得する 

結果


D: 1 -> BASE
D: 2 -> BASE_1_1
D: 3 -> CUPCAKE
D: 10000 -> CUR_DEVELOPMENT
D: 4 -> DONUT
D: 5 -> ECLAIR
D: 6 -> ECLAIR_0_1
D: 7 -> ECLAIR_MR1
D: 8 -> FROYO
D: 9 -> GINGERBREAD
D: 10 -> GINGERBREAD_MR1
D: 11 -> HONEYCOMB
D: 12 -> HONEYCOMB_MR1
D: 13 -> HONEYCOMB_MR2
D: 14 -> ICE_CREAM_SANDWICH
D: 15 -> ICE_CREAM_SANDWICH_MR1
D: 16 -> JELLY_BEAN
D: 17 -> JELLY_BEAN_MR1
D: 18 -> JELLY_BEAN_MR2
D: 19 -> KITKAT
D: 20 -> KITKAT_WATCH
D: 21 -> LOLLIPOP
D: 22 -> LOLLIPOP_MR1
D: 23 -> M
D: 24 -> N
D: 25 -> N_MR1
D: 26 -> O
D: 27 -> O_MR1
D: 28 -> P
D: 29 -> Q
D: RELEASE : 10
D: SDK     : 29

あ、

すでに、Mから内部的には「スイーツ名」は使ってなかったのですな。

(👉 続いて、Android10の新機能を試す(記事更新中...待て))


「Google Go」からの読み上げ機能が楽ちん!

👉 軽量版Googleアプリ「Google Go」、日本を含む世界で公開 音声読み上げ機能も - ITmedia NEWS 

カメラ起動からでは見えない「読み上げ機能」が分かりやすく使いやすく利用できるようになります。

ここでは、パソコンのディスプレイに写ったブラウザ上の英文を読み上げしてみました。



英文のまま読み上げたり、日本語に翻訳して読み上げたり、単語を選択して辞書を開いたりできます。

👉 Google Go: A lighter, faster way to search - Google Play のアプリ