山岸  英樹

山岸 英樹

1656759900

Android開発者向けの5つの便利なKotlin拡張機能

Kotlin拡張機能とは何ですか?

Kotlinは、クラスから継承したり、などのデザインパターンを使用したりすることなく、クラスまたはインターフェイスを新しい機能で拡張する機能を提供しますDecorator。これは、拡張機能と呼ばれる特別な宣言を介して行われます。

たとえば、String主にコードでクラスを使用しました。一部のプロパティをに含めたい場合がありますが、含まれString classません。この場合、KotlinExtensionメソッドを使用すると可能になります。

String文字列内のすべての文字をアルファベット順に並べ替える1つのプロパティが必要だとします。Extensionそのための関数を作ってみましょう。

fun String.sortAlphabetically() = toCharArray().apply { sort() }

拡張機能の機能とは何か、そしてそれらがどのように見えるかを理解していただければ幸いです。

1. EditText onChanged Text

テキストの編集の変更は、モバイルアプリケーションで実行する重要なタスクです。どのテキストが変更されたかを確認します。テキストの使用例の1つはEditText.onChange、3〜4文字の文字が検索を開始したときにボタンを押さずに、検索バーで何かを検索することです。テキストに変更がある場合、関数は文字列で変更されたテキストを返します。

fun EditText.onChange(textChanged: ((String) -> Unit)) {
    this.addTextChangedListener(object : TextWatcher {
        override fun afterTextChanged(s: Editable?) {

        }

        override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {}

        override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
            textChanged.invoke(s.toString())
        }
    })
}

2.トーストを表示

この拡張機能を使用すると、ActivitiesまたはFragmentのどこでも、またはを渡すことができる場所ならどこでもtoastを呼び出すことができますContext。電話をかけるだけshowToast(MESSAGE_YOU_WANT_TO_SHOW)で、デフォルトではトーストの持続時間はになりますToast.LENGTH_SHORT

fun Context.showToast(message: String?, length: Int = Toast.LENGTH_SHORT) {
    message?.let {
        Toast.makeText(this, it, length).show()
    }
}


//Usage
showToast("Hello World👋")

3.スナックバーを表示する

Snackbarモバイルアプリの画面下部に簡単なメッセージを表示するために使用されます。トーストの一種です。でSnackBar、要件がある場合はアクションボタンがある場合があります。

fun View.showSnackMessage(
    message: String?,
    anchorView: View? = null,
    backgroundColor: Int,
    textColor: Int,
    length: Int = Snackbar.LENGTH_SHORT
) {
    message?.let {
        try {
            val snack = Snackbar.make(this, it, length)
            snack.setBackgroundTint(ContextCompat.getColor(context, backgroundColor))
            snack.setTextColor(ContextCompat.getColor(context, textColor))
            snack.anchorView = anchorView
            snack.show()
        } catch (ex: Exception) {
            ex.showLog()
        }
    }
}

4.インターネットが利用可能かどうかを確認します

ファイルのアップロードやアプリでインターネットからのあらゆる種類のデータの取得などのAPIリクエストを行う際には、インターネットが利用可能である必要があります。インターネットが利用できない場合、アプリはクラッシュします。

1つのシナリオで、Androidプロジェクトに複数のアクティビティとフラグメントがあり、インターネットが多くのポイントで利用可能であることを確認する必要がある場合、接続マネージャーを数回呼び出す必要があります。これは、プロジェクトで使用する拡張機能が1つあるためです。 。

それもあなたを助けます。

fun Context.isNetworkAvailable(): Boolean {
    val manager = getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
        val capabilities = manager.getNetworkCapabilities(manager.activeNetwork)
        if (capabilities != null) {
            if (capabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)) {
                return true
            } else if (capabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)) {
                return true
            } else if (capabilities.hasTransport(NetworkCapabilities.TRANSPORT_ETHERNET)) {
                return true
            }
        }
    } else {
        try {
            val activeNetworkInfo = manager.activeNetworkInfo
            if (activeNetworkInfo != null && activeNetworkInfo.isConnected) {
                return true
            }
        } catch (e: Exception) {
            e.showLog()
        }
    }
    return false
}


//Usage
//For example, In the MainActivity, how to call this?
if(isNetworkAvailable()){
  //Perform your task
}else{
   showToast("Internet is not available, Try Later")
}   
  

インターネット接続チェック拡張機能

5.ビューの可視性を制御する

Androidで、取得したデータに応じてビューを表示または非表示にする場合。特定のビューの表示を非表示にしたい場合があります。たとえば、を使用ProgressBarすると、一部のデータがバックエンドまたはローカルソースから取得しているときにのみプログレスバーを表示したいとします。データがフェッチされたら、プログレスバーを非表示にします。

Androidでこのアクションを実行する一般的な方法はbinding.loadingProgressBar = View.GONE、毎回実行する必要があります。Viewこれで、クラスを使用して1つの拡張関数を作成するだけで、ニーズを満たすことができます。

fun View.show() {
    visibility = View.VISIBLE
}

fun View.hide() {
    visibility = View.GONE
}

fun View.invisible() {
    visibility = View.INVISIBLE
}

//Removing visibility of ProgressBar
//Using Extension
binding.loadingPb.hide()
//Without Extension
binding.loadingPb.visibility = View.GONE

結論

それで全部です!あなたが何かを学んだことを願っています。疑問がある場合は、コメントしてください。私はあなたの問題を喜んで解決します。

ありがとう、そして乾杯!

ソース:https ://betterprogramming.pub/5-useful-kotlin-extensions-for-android-developers-485f7c9ad7e8

#kotlin #android #web-development 

What is GEEK

Buddha Community

Android開発者向けの5つの便利なKotlin拡張機能
山岸  英樹

山岸 英樹

1656759900

Android開発者向けの5つの便利なKotlin拡張機能

Kotlin拡張機能とは何ですか?

Kotlinは、クラスから継承したり、などのデザインパターンを使用したりすることなく、クラスまたはインターフェイスを新しい機能で拡張する機能を提供しますDecorator。これは、拡張機能と呼ばれる特別な宣言を介して行われます。

たとえば、String主にコードでクラスを使用しました。一部のプロパティをに含めたい場合がありますが、含まれString classません。この場合、KotlinExtensionメソッドを使用すると可能になります。

String文字列内のすべての文字をアルファベット順に並べ替える1つのプロパティが必要だとします。Extensionそのための関数を作ってみましょう。

fun String.sortAlphabetically() = toCharArray().apply { sort() }

拡張機能の機能とは何か、そしてそれらがどのように見えるかを理解していただければ幸いです。

1. EditText onChanged Text

テキストの編集の変更は、モバイルアプリケーションで実行する重要なタスクです。どのテキストが変更されたかを確認します。テキストの使用例の1つはEditText.onChange、3〜4文字の文字が検索を開始したときにボタンを押さずに、検索バーで何かを検索することです。テキストに変更がある場合、関数は文字列で変更されたテキストを返します。

fun EditText.onChange(textChanged: ((String) -> Unit)) {
    this.addTextChangedListener(object : TextWatcher {
        override fun afterTextChanged(s: Editable?) {

        }

        override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {}

        override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
            textChanged.invoke(s.toString())
        }
    })
}

2.トーストを表示

この拡張機能を使用すると、ActivitiesまたはFragmentのどこでも、またはを渡すことができる場所ならどこでもtoastを呼び出すことができますContext。電話をかけるだけshowToast(MESSAGE_YOU_WANT_TO_SHOW)で、デフォルトではトーストの持続時間はになりますToast.LENGTH_SHORT

fun Context.showToast(message: String?, length: Int = Toast.LENGTH_SHORT) {
    message?.let {
        Toast.makeText(this, it, length).show()
    }
}


//Usage
showToast("Hello World👋")

3.スナックバーを表示する

Snackbarモバイルアプリの画面下部に簡単なメッセージを表示するために使用されます。トーストの一種です。でSnackBar、要件がある場合はアクションボタンがある場合があります。

fun View.showSnackMessage(
    message: String?,
    anchorView: View? = null,
    backgroundColor: Int,
    textColor: Int,
    length: Int = Snackbar.LENGTH_SHORT
) {
    message?.let {
        try {
            val snack = Snackbar.make(this, it, length)
            snack.setBackgroundTint(ContextCompat.getColor(context, backgroundColor))
            snack.setTextColor(ContextCompat.getColor(context, textColor))
            snack.anchorView = anchorView
            snack.show()
        } catch (ex: Exception) {
            ex.showLog()
        }
    }
}

4.インターネットが利用可能かどうかを確認します

ファイルのアップロードやアプリでインターネットからのあらゆる種類のデータの取得などのAPIリクエストを行う際には、インターネットが利用可能である必要があります。インターネットが利用できない場合、アプリはクラッシュします。

1つのシナリオで、Androidプロジェクトに複数のアクティビティとフラグメントがあり、インターネットが多くのポイントで利用可能であることを確認する必要がある場合、接続マネージャーを数回呼び出す必要があります。これは、プロジェクトで使用する拡張機能が1つあるためです。 。

それもあなたを助けます。

fun Context.isNetworkAvailable(): Boolean {
    val manager = getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
        val capabilities = manager.getNetworkCapabilities(manager.activeNetwork)
        if (capabilities != null) {
            if (capabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)) {
                return true
            } else if (capabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)) {
                return true
            } else if (capabilities.hasTransport(NetworkCapabilities.TRANSPORT_ETHERNET)) {
                return true
            }
        }
    } else {
        try {
            val activeNetworkInfo = manager.activeNetworkInfo
            if (activeNetworkInfo != null && activeNetworkInfo.isConnected) {
                return true
            }
        } catch (e: Exception) {
            e.showLog()
        }
    }
    return false
}


//Usage
//For example, In the MainActivity, how to call this?
if(isNetworkAvailable()){
  //Perform your task
}else{
   showToast("Internet is not available, Try Later")
}   
  

インターネット接続チェック拡張機能

5.ビューの可視性を制御する

Androidで、取得したデータに応じてビューを表示または非表示にする場合。特定のビューの表示を非表示にしたい場合があります。たとえば、を使用ProgressBarすると、一部のデータがバックエンドまたはローカルソースから取得しているときにのみプログレスバーを表示したいとします。データがフェッチされたら、プログレスバーを非表示にします。

Androidでこのアクションを実行する一般的な方法はbinding.loadingProgressBar = View.GONE、毎回実行する必要があります。Viewこれで、クラスを使用して1つの拡張関数を作成するだけで、ニーズを満たすことができます。

fun View.show() {
    visibility = View.VISIBLE
}

fun View.hide() {
    visibility = View.GONE
}

fun View.invisible() {
    visibility = View.INVISIBLE
}

//Removing visibility of ProgressBar
//Using Extension
binding.loadingPb.hide()
//Without Extension
binding.loadingPb.visibility = View.GONE

結論

それで全部です!あなたが何かを学んだことを願っています。疑問がある場合は、コメントしてください。私はあなたの問題を喜んで解決します。

ありがとう、そして乾杯!

ソース:https ://betterprogramming.pub/5-useful-kotlin-extensions-for-android-developers-485f7c9ad7e8

#kotlin #android #web-development