Save the date! Android Dev Summit is coming to Sunnyvale, CA on Oct 23-24, 2019.

-

Android KTX

Android KTX は、Android Jetpack ファミリーの一部である Kotlin 拡張機能 セットです。Kotlin で使用するために、Jetpack と Android プラットフォーム API を 最適化します。Android KTX の目的は、Kotlin 言語の機能(拡張機能 / プロパティ、 ラムダ、名前付きパラメータ、パラメータのデフォルト値など)を 活用することで、Kotlin による Android 開発を、より簡潔で快適かつ言語特有のもの にすることです。Android KTX により、既存の Android API に新機能が追加される わけではありません。

Android KTX の詳細については、DevBytes の動画をご覧ください。

はじめに

Android KTX の使用を開始するには、プロジェクトの build.gradle ファイルに次の行を追加します。

repositories {
    google()
}

Android KTX はモジュール化されています。各モジュールには 1 つ以上のパッケージが含まれます。

モジュールを使用する場合は、アプリの build.gradle ファイルに各 Android KTX アーティファクトの依存関係を含めます。アーティファクトに必ずバージョンを追加 してください。たとえば、core-ktx モジュールを使用する場合、完全に形成された 依存関係は次のようになります。

dependencies {
    implementation 'androidx.core:core-ktx:1.0.0-alpha1'
}

モジュール

Android KTX は以下の Maven アーティファクトで構成されています。API リファレンス ドキュメントについては、特定のパッケージ名をクリックし、拡張機能の概要をご確認ください。

モジュール(アーティファクト) バージョン パッケージ
androidx.core:core-ktx 1.0.0-alpha1 以下のすべてのコアパッケージをご覧ください。
androidx.fragment:fragment-ktx 1.0.0-alpha1 androidx.fragment.app
androidx.palette:palette-ktx 1.0.0-alpha1 androidx.palette.graphics
androidx.sqlite:sqlite-ktx 1.0.0-alpha1 androidx.sqlite.db
androidx.collection:collection-ktx 1.0.0-alpha1 androidx.collection
androidx.lifecycle:lifecycle-viewmodel-ktx 2.0.0-alpha1 androidx.lifecycle
androidx.lifecycle:lifecycle-reactivestreams-ktx 2.0.0-alpha1 androidx.lifecycle
android.arch.navigation:navigation-common-ktx 1.0.0-alpha01 androidx.navigation
android.arch.navigation:navigation-fragment-ktx 1.0.0-alpha01 androidx.navigation.fragment
android.arch.navigation:navigation-runtime-ktx 1.0.0-alpha01 androidx.navigation
android.arch.navigation:navigation-testing-ktx 1.0.0-alpha01 androidx.navigation.testing
android.arch.navigation:navigation-ui-ktx 1.0.0-alpha01 androidx.navigation.ui
android.arch.work:work-runtime-ktx 1.0.0-alpha01 androidx.work.ktx

コアモジュールには次のパッケージが含まれています。

Android KTX は Android Jetpack の基礎コンポーネントです。Sunflower デモアプリで 使用法を ご確認ください。

以下の例では、Android KTX 拡張機能のいくつかを挙げています。 これらはモジュール(アーティファクト)名ごとにグループ化されています。 拡張機能の詳しいリストについては、完全なパッケージ リファレンス ドキュメントをご確認ください。

androidx.core:core-ktx

Kotlin

sharedPreferences.edit()
    .putBoolean("key", value)
    .apply()

Kotlin + Android KTX

sharedPreferences.edit {
    putBoolean("key", value)
}

Kotlin

view.viewTreeObserver.addOnPreDrawListener(
    object : ViewTreeObserver.OnPreDrawListener {
        override fun onPreDraw(): Boolean {
            viewTreeObserver.removeOnPreDrawListener(this)
            actionToBeTriggered()
            return true
        }
    }
)

Kotlin + Android KTX

view.doOnPreDraw {
     actionToBeTriggered()
}

androidx.sqlite:sqlite-ktx

Kotlin

db.beginTransaction()
try {
    // insert data
    db.setTransactionSuccessful()
} finally {
    db.endTransaction()
}

Kotlin + Android KTX

db.transaction {
    // insert data
}

androidx.fragment:fragment-ktx

Kotlin

supportFragmentManager
    .beginTransaction()
    .replace(R.id.my_fragment_container, myFragment, FRAGMENT_TAG)
    .commitAllowingStateLoss()

Kotlin + Android KTX

supportFragmentManager.transaction(allowStateLoss = true) {
            replace(R.id.my_fragment_container, myFragment, FRAGMENT_TAG)
        }

フィードバック

Android KTX は現在、アルファ版です。Google では引き続き、Jetpack 全体で新しい Kotlin 拡張機能を追加し、皆様からのフィードバックをお待ちしています。問題を報告したり、機能を提案したりするには、 Android KTX の Issue Tracker をご使用ください。