当前位置: 首页 > 工具软件 > Anko > 使用案例 >

kotlin android 镜像,【54】Kotlin android Anko 神兵利器

燕寒
2023-12-01

是一个使开发Android应用更简单更快捷的库,Anko使你的代码简洁易懂, 使开发者不用再在意Android SDK对Java版本的限制(目前还不支持Java8 =。= ).

anko有很多模块。我们就选下面这一款集成看下

module:app -> build.gradle->dependencies

添加以下代码

implementation "org.jetbrains.anko:anko-sdk15:0.9.1"

同步代码后

布局

xmlns:app="http://schemas.android.com/apk/res-auto"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

tools:context=".MainActivity">

android:id="@+id/tv_hello"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:text="Hello World!"

app:layout_constraintBottom_toBottomOf="parent"

app:layout_constraintLeft_toLeftOf="parent"

app:layout_constraintRight_toRightOf="parent"

app:layout_constraintTop_toTopOf="parent" />

package com.anguomob.demoforktanko

import android.os.Bundle

import android.widget.Toast

import androidx.appcompat.app.AppCompatActivity

import kotlinx.android.synthetic.main.activity_main.*

import org.jetbrains.anko.onClick

class MainActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {

super.onCreate(savedInstanceState)

setContentView(R.layout.activity_main)

tv_hello.onClick { view->

Toast.makeText(view!!.context,tv_hello.text,Toast.LENGTH_LONG).show()

}

}

}

只简化了这个 onClick 有这个必要加一个依赖吗?

还可以简化事件传递

之前传递方法 MainActivity

package com.anguomob.demoforktanko

import android.content.Intent

import android.os.Bundle

import androidx.appcompat.app.AppCompatActivity

import kotlinx.android.synthetic.main.activity_main.*

import org.jetbrains.anko.onClick

class MainActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {

super.onCreate(savedInstanceState)

setContentView(R.layout.activity_main)

tv_hello.onClick { view ->

val intent = Intent(this@MainActivity, TestActivity::class.java)

intent.putExtra("Key","From MainActivity")

startActivity(intent)

}

}

}

接受方 TestActivity

package com.anguomob.demoforktanko

import android.os.Bundle

import androidx.appcompat.app.AppCompatActivity

import kotlinx.android.synthetic.main.activity_test.*

class TestActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {

super.onCreate(savedInstanceState)

setContentView(R.layout.activity_test)

intent.extras?.get("Key").let{

tv_ta_hello.text= it.toString()

}

}

}

anko简化后 传递方法 MainActivity

package com.anguomob.demoforktanko

import android.content.Intent

import android.os.Bundle

import androidx.appcompat.app.AppCompatActivity

import kotlinx.android.synthetic.main.activity_main.*

import org.jetbrains.anko.onClick

import org.jetbrains.anko.startActivity

class MainActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {

super.onCreate(savedInstanceState)

setContentView(R.layout.activity_main)

tv_hello.onClick { view ->

startActivity("Key" to "From mainActivity")

}

}

}

运行一下 效果不变

..新版本的依赖 不支持.onClik方法了。

implementation "org.jetbrains.anko:anko-sdk15:0.10.8"

anko有自己的dsl  可以自己定义布局

我们修改之前的 TestActivity .  删除布局 自定义布局

这有点像ios开发。as 上面也有布局转换成ak的插件 可以去了解下。搜索anko就可以搜到

package com.anguomob.demoforktanko

import android.os.Bundle

import android.view.Gravity

import androidx.appcompat.app.AppCompatActivity

import org.jetbrains.anko.matchParent

import org.jetbrains.anko.relativeLayout

import org.jetbrains.anko.textView

class TestActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {

super.onCreate(savedInstanceState)

val text = intent.extras?.get("Key").toString()?:"没收到数据啊"

relativeLayout {

textView(text) {

}.lparams(width = matchParent, height = matchParent) {

gravity = Gravity.CENTER

}

}

}

}

MainActivity

package com.anguomob.demoforktanko

import android.os.Bundle

import androidx.appcompat.app.AppCompatActivity

import kotlinx.android.synthetic.main.activity_main.*

import org.jetbrains.anko.startActivity

class MainActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {

super.onCreate(savedInstanceState)

setContentView(R.layout.activity_main)

tv_hello.setOnClickListener { view ->

startActivity("Key" to "From mainActivity")

}

}

}

 类似资料: