Kotlinを使ってAndroid APIsをもっと面白くする

2364 ワード

Kotlinで最も好きな機能の1つは拡張機能で、クラスの機能を継承することなく拡張することができます.
Viewの高さの設定
Androidで動的にViewに高さを設定するのは煩わしいので、Kotlin拡張を使用すると、より楽になります.
fun View.setHeight(height:Int){
  val params = layoutParams
  params.height = height
  layoutParams = params
}

あなたのviewインスタンスにheightを設定したい場合は、view.setHeight(newHeight)を呼び出すだけで、超簡単です.
ViewVisibilityの設定
viewをvisibleまたはgoneに設定するにはview.Visibility = View.VISIBLE or view.visibility = View.GONEを通過する必要がありますが、拡張方法があればこれを書く必要はありません.
fun View.visible(){
  visibility = View.VISIBLE 
}

fun View.gone(){
  visibility = View.GONE
}
view.visible()view.gone()を呼び出すだけです
AssetファイルをStringに読み込む
fun AssetManager.fileAsString(subdirectory:String,filename:String):String{
  return open("$subdirectory/$filename").use{
    it.readBytes().toString(Charset.defaultCharset())
  }
}

次のコードを呼び出すことができます.
val json = context.assets.fileAsString("json","config.json")

APIレベルでcolorリソースを取得
API 23の前に、1つのcolorリソースを取得するにはcontext.getColor(R.color.my_color)が使用されていましたが、23から新しいパラメータが追加されました.トピックリソースを指定する必要がなければ、より簡単に使用できるように、すべてのAPIレベルで実行できます.
fun Context.color(@ColorRes id:Int) = when{
  isAtLeastMarshmallow() -> resources.getColor(id,null)
  else -> resources.getColor(id)
}
context.color(R.color.my_color)を呼び出すと色が取得され、トピックリソースをデフォルトのオプションパラメータとして使用することもできます.
Inflate a Layout
fun Context.inflate(res:Int,parent:ViewGroup?=null):View{
  return LayoutInflater.from(this).inflate(res,parent,false)
}
context.inflate(R.layout.my_layout)と書くことができます
JetBrainsのAnkoを使用してソースライブラリを開く
JetBrainsはAndroid開発をより簡単にするために多くの仕事をしています.彼らはAnkoライブラリに多くの拡張方法を作成し、カスタム拡張方法を作成することなく自由に使用することができます.
例えば、西戎サービスを取得するには、Ankoの使用がより簡単になります.
val manager = context.notificationManager

拡張プロパティは次のとおりです.
val Context.notificationManager: NotificationManager
    get() = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager

Androidには強力なAPIsがたくさんありますが、javaの制限を受け、Kotlinを使用すると、よりよく使われるAPIを作成することができます.
原文住所:https://m.signalvnoise.com/using-kotlin-to-make-android-apis-fun-again-14690975afb6