Android Dev Summit, October 23-24: two days of technical content, directly from the Android team. Sign-up for livestream updates.

Android KTX

Android KTX Android Jetpack の一部)

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'
    }
    

モジュール

Android KTX は以下の Maven アーティファクトで構成されています。API リファレンス ドキュメントについては、該当するパッケージ名をクリックし、拡張機能の概要をご確認ください。バージョン番号は変わる可能性があることにご注意ください。最新版を使用しているかどうかは、Google Maven リポジトリをご確認ください。

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

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

Android KTX は 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)
            }
    

フィードバック

Google では引き続き、Jetpack 全体にわたって新しい Kotlin 拡張機能を追加する予定です。皆様からのフィードバックをお待ちしています。問題の報告や機能のご提案があれば、Android KTX の Issue Tracker をご利用ください。