安卓使用kotlin優(yōu)雅開發(fā)

都說kotlin是站在巨人的肩膀上(java),Kotlin 是一種在 Java 虛擬機(jī)上運(yùn)行的靜態(tài)類型編程語言,被稱之為 Android 世界的Swift,由 JetBrains 設(shè)計(jì)開發(fā)并開源。Kotlin 可以編譯成Java字節(jié)碼,也可以編譯成 JavaScript,方便在沒有 JVM 的設(shè)備上運(yùn)行。在Google I/O 2017中,Google 宣布 Kotlin 成為 Android 官方開發(fā)語言。確實(shí),kotlin是非常強(qiáng)大的一門語言,下面我通過一個(gè)例子來給大家簡(jiǎn)闡述它的強(qiáng)大(安卓開發(fā)方面)。

1、kotlin簡(jiǎn)化了很多,下面簡(jiǎn)單舉幾個(gè)例子,kotlin少了findViewById,可以直接用控件的id來進(jìn)行操作,同時(shí)設(shè)置點(diǎn)擊監(jiān)聽也優(yōu)化了,一句代碼搞定button.setOnClickListener { doSomething() },同時(shí)打開startactivity可以這樣寫 startActivity(Intent(this, Main2Activity::class.java)),其他的我就不一 一介紹了,有興趣的小伙伴可以參考官方文檔

class MainActivity : AppCompatActivity() {

? ? ? override fun onCreate(savedInstanceState:Bundle?) {

? ? ? ? ? super.onCreate(savedInstanceState)? ? ? ? ? setContentView(R.layout.activity_main)? ? ? ? ? // No need to call findViewById(R.id.textView) as TextView? ? ? ? ? textView.text = "Kotlin for Android rocks!"

? ? ? ? ? //設(shè)置點(diǎn)擊監(jiān)聽

? ? ? ? ? textView.setOnClickListener {

? ? ? ? ? startActivity(Intent(this,Main2Activity::class.java))//打開新的activity

? ? ? ? ? }

? ? ? }

? }

2、下面寫了一個(gè)小例子,首先定義兩個(gè)抽象類baseActivity和baseFragment來作為activity和Fragment的基類?

BaseActivity.kt

import android.os.Bundleimport android.support.v7.app.AppCompatActivityimport android.widget.Toast/**

* Created by aiiage on 2018/8/8.

* 定義activity的基類

*/abstract class BaseActivity : AppCompatActivity() {

? ? /**

? ? * 獲取布局id

? ? */? ? protected abstract fun getContentViewLayoutID(): Int

? ? /**

? ? * 初始化控件

? ? */

? ? protected abstract fun initView(savedInstanceState: Bundle?)

? ? override fun onCreate(savedInstanceState: Bundle?) {

? ? ? ? super.onCreate(savedInstanceState)

? ? ? ? if (getContentViewLayoutID()!=0)

? ? ? ? {

? ? ? ? ? ? setContentView(getContentViewLayoutID())

? ? ? ? ? ? initView(savedInstanceState)

? ? ? ? }

? ? }

? ? //Toast彈窗? ? protected fun showToast(desc: String) {

? ? ? ? Toast.makeText(this,desc,Toast.LENGTH_SHORT).show()

? ? }

}

BaseFragment.kt

mport android.os.Bundleimport android.support.v4.app.Fragmentimport android.view.LayoutInflaterimport android.view.Viewimport android.view.ViewGroup/**

* Created by aiiage on 2018/8/8.

* Fragment的基類

*/abstract class BaseFragment : Fragment(){

? ? /**

? ? * 獲取布局ID

? ? */? ? protected abstract fun getContentViewLayoutID(): Int

? ? /**

? ? * 界面初始化

? ? */

? ? protected abstract fun init()

? ? override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {

? ? ? ? return if (getContentViewLayoutID() != 0) {

? ? ? ? ? ? inflater.inflate(getContentViewLayoutID(), container, false)

? ? ? ? } else {

? ? ? ? ? ? super.onCreateView(inflater, container, savedInstanceState)

? ? ? ? }

? ? }

? ? override fun onViewCreated(view: View, savedInstanceState: Bundle?) {

? ? ? ? super.onViewCreated(view, savedInstanceState)

? ? ? ? init()

? ? }

}

BaseActivity的引用

import android.annotation.SuppressLintimport android.content.Intentimport android.os.Bundleimport android.view.Viewimport com.andream.aiiage.learn.Rimport kotlinx.android.synthetic.main.activity_main.*@Suppress("UNUSED_EXPRESSION")

class MainActivity : BaseActivity(), View.OnClickListener {

? ? /**

? ? * 控件點(diǎn)擊事件監(jiān)聽

? ? */? ? @SuppressLint("SetTextI18n")

? ? override fun onClick(p0: View) {

? ? ? ? when (p0.id) {

? ? ? ? ? ? R.id.hello -> {

? ? ? ? ? ? ? ? hello.text = "hello,kotlin"? ? ? ? ? ? ? ? showToast("welcome")

? ? ? ? ? ? }

? ? ? ? ? ? R.id.startNextActivity->{

? ? ? ? ? ? ? ? startActivity(Intent(this, Main2Activity::class.java))

? ? ? ? ? ? }

? ? ? ? }

? ? }

? ? /**

? ? * 返回布局id

? ? */? ? override fun getContentViewLayoutID(): Int {

? ? ? ? return R.layout.activity_main

? ? }

? ? /**

? ? * 控件的初始化

? ? */? ? override fun initView(savedInstanceState: Bundle?) {

? ? ? ? hello.setOnClickListener(this)

? ? ? ? startNextActivity.setOnClickListener(this)

? ? }

}

BaseFragment的引用

import com.andream.aiiage.learn.Rimport kotlinx.android.synthetic.main.first_fragment_layout.*/**

* Created by aiiage on 2018/8/8.

* firstFragment

*/class FirstFragment : BaseFragment(){

? ? override fun getContentViewLayoutID(): Int {

? ? ? ? return R.layout.first_fragment_layout

? ? }

? ? override fun init() {

? ? ? ? firstFragmentText.text="firstFragmentText"? ? }

}

3、效果圖?


4、總結(jié):kotlin使得安卓開發(fā)的代碼變得簡(jiǎn)潔起來,方便維護(hù)閱讀,效率高,提高開發(fā)速度。?

5、源碼:https://download.csdn.net/download/qq_36480491/10590490

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容