以前一直使用java來開發Android項目,學了新的kotlin語言,前來試一試,並說一下kotlin對Android的一些功能加強java
我使用的是Android Studio3.0+,因此默認就支持kotlinandroid
建立項目的時候記得勾選kotlin支持app
以往咱們是經過findviewbyid來找到實例,而kotlin中提供了一種更爲快捷的方式,只須要一行代碼,以後咱們就能夠直接使用佈局裏面的定義的各類實例了ide
像日常同樣,咱們能夠使用實例來更改控件的內容,同時,這個按鈕也能夠做爲監聽器的判斷。佈局
以往咱們的點擊監聽器,使用switch或者if語句來判斷點擊的控件,從而執行不一樣的操做。而kotlin中,直接使用實例判斷,具體的代碼在下面的MainActivity.java中測試
switch(v.getId){ case R.id.btn: //邏輯操做 break; } if(v.getId == R.id.btn){ //邏輯操做 }
activity_main.xmlthis
<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" 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="com.wan.noveldownloader.activity.MainActivity"> <Button android:id="@+id/btn_test" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="測試" /> </android.support.constraint.ConstraintLayout>
MainActivity.javacode
package com.wan.noveldownloader.activity import android.os.Bundle import android.view.View import com.wan.noveldownloader.R import kotlinx.android.synthetic.main.activity_main.* class MainActivity : BaseActivity(),View.OnClickListener { override fun onClick(v: View?) { when (v) { //操做 btn_test -> showToast("htllo") } } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) //這裏的btn_test就是佈局文件的按鈕實例 //輸入btn_test會自動增長一行import kotlinx.android.synthetic.main.activity_main.* btn_test.setOnClickListener(this) } }
val intent = Intent(this, SettingActivity::class.java) startActivity(intent)
使用object來實現抽象類接口方法xml
val rvAdapter = object : RVAdapter<DownloadingItem>(lists) { override fun bindDataToView(holder: RVAdapter.RVViewHolder, position: Int, bean: DownloadingItem, isSelected: Boolean) { } override fun getItemLayoutID(position: Int, bean: DownloadingItem): Int { return 0 } override fun onItemClick(position: Int, bean: DownloadingItem) { } }