Kotlin開發Android專案簡單demo,不僅僅是Hello World
上一篇文章寫道如何在AndroidStudio上面安裝Kotlin外掛,併成功編譯。在網上很多入門教程到這裡就停止了,導致很多人一頭霧水不知道該如何進行下去。今天這一篇依舊是入門,但是這將是可以更好舉一反三的demo,希望可以給大家帶來一點啟發。
1.建立專案
首先我們需要新建一個Kotlin專案,然後新增兩個Kotlin類和相對應的的佈局檔案
這個很簡單看一下圖就好了
因為後面會涉及到兩個Activity之間的跳轉,所以提前在AndroidManifest.xml裡配置一下Activity,和傳統方式一樣,為了更直觀程式碼如下
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.yy.study.kotlin">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".LoginActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
//此處為RegisterActivity
<activity android:name=".RegisterActivity"></activity>
</application>
</manifest>
接下來,我們說說這一次demo的功能。非常簡單
1.在登入頁面對輸入的使用者名稱和密碼進行判斷,然後點選登入按鈕提示是否成功。
2.點選註冊跳轉到註冊頁面,然後再返回到登入頁面,
我們先來看看頁面。由於註冊頁面就一個標題,所以下邊只放登入頁面。
悄悄告訴你們,這是我剝離的專案裡面登入頁面。所以低調低調。。。打槍滴不要,悄悄滴進村。。。
2.程式碼編寫
在進過上面的瞭解後,終於要開始擼程式碼了。我們先把這些控制元件在Activity裡面去例項化吧。說到例項化,Kotlin的寫法就有所不同了,我將展現兩種常用的寫法
第一種方法
class LoginActivity : AppCompatActivity(){
/**
* lateinit表示修飾不可空的型別(注意:不能修飾基礎型別,int、double等)
*/
//手機號碼
private lateinit var inputPhone: EditText
//密碼
private lateinit var inputPassword: EditText
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_login)
init()
}
fun init(){
inputPhone.findViewById(R.id.input_phone)
inputPassword.findViewById(R.id.input_password)
}
}
上面看了第一種方法,感覺差距不是太大,和傳統的方式十分相近。但是這並不能表現出Kotlin的優勢,下面我們看看第二種。使用第二種方法首先要在Module的build.gradle裡新增一行配置,再點選Sync Now。
apply plugin: 'kotlin-android-extensions'
完了之後就是見證奇蹟的時刻了,不要什麼findViewById,不要什麼註解。睜大眼睛。
class LoginActivity : AppCompatActivity(){
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_login)
init()
}
fun init(){
login_title.text = "改變登入頁面的標題"
}
}
哈哈哈,是不是很6666的感覺。有了這個外掛,只需要在Activity裡直接使用在佈局檔案裡設定的ID名就可以進行操作了,我這是簡單的改變了一下登入頁面的標題。細心的同學會發現這樣會有settext卻沒有gettext了,這裡我要強調一下.text是會自動轉換的,它會根據你是否賦值來判斷set和get
好了扯了這麼多淡,接下來我們使用第二種方法來完成開頭提到的功能吧,話不多說直接上程式碼!!!
package com.yy.study.kotlin
import android.content.Intent
import android.os.Bundle
import android.support.v7.app.AppCompatActivity
import android.view.View
import android.widget.Toast
import kotlinx.android.synthetic.main.activity_login.*
/**
* @titke : 登入頁面
* @date : 2017/5/19
* @author : emF
*/
class LoginActivity : AppCompatActivity(),View.OnClickListener{
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_login)
init()
}
fun init(){
login_submit.setOnClickListener(this)
register.setOnClickListener(this)
}
/**
* 事件監聽
*/
override fun onClick(v: View?) {
/**
* 這裡的 v.id 和 v.getId 意思一樣,?表示當某個變數的值可以為 null 的時候,必須在宣告處的型別後新增 ?來標識該引用可為空
* 在 Kotlin 裡 switch 被 when替換,具體參考 Kotlin 開發文件
*/
when(v?.id){
R.id.login_submit -> {
//宣告兩個可變變數
var phoen : String
var pwd : String
//獲得輸入的使用者名稱和密碼
phoen = input_phone.text.toString().trim()
pwd = input_password.text.toString().trim()
//對使用者名稱和密碼進行判斷
if(!phoen.equals("1234567890") || !pwd.equals("123456")){
Toast.makeText(this,"使用者名稱或密碼錯誤",Toast.LENGTH_LONG).show()
}else{
Toast.makeText(this,"登入成功",Toast.LENGTH_LONG).show()
}
}
R.id.register -> {
/**
* 建立一個 Intent 類的例項
* 注意:在 Kotlin 裡沒有 new 關鍵字
* ::雙冒號是 JDK1.8 的新特性,表示方法引用
*/
var intent = Intent()
intent.setClass(this,RegisterActivity::class.java)
startActivity(intent)
}
}
}
}
package com.yy.study.kotlin
import android.os.Bundle
import android.support.v7.app.AppCompatActivity
import android.view.View
import kotlinx.android.synthetic.main.activity_register.*
/**
* @titke : 註冊頁面
* @date : 2017/5/19
* @author : emF
*/
class RegisterActivity : AppCompatActivity() , View.OnClickListener{
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_register)
init()
}
fun init(){
register_close.setOnClickListener(this)
}
/**
* 事件監聽
*/
override fun onClick(v: View?) {
when(v?.id){
R.id.register_close -> finish()
}
}
}
到此為止,這個簡單的demo就結束了。中間的功能很簡陋,不過相信各位同學都能舉一反三,不會舉一反三的程式猿不是好猿。值得注意的是這中間有一些地方還是產生了不小的變化,不過我都註釋出來了。覺得還不錯的用贊戳我吧!!!
相關文章
- Linux不僅僅是開源Linux
- 一個最簡單的WebSocket hello world demoWeb
- NoSQL——not onlySQL不僅僅是SQLSQL
- 元素,不僅僅是化學
- Redis不僅僅是快取,還是……Redis快取
- android socket聊天室——也不僅僅是聊天室Android
- 電子競技,不僅僅是遊戲遊戲
- 你的工作不僅僅是程式設計程式設計
- iCloud不僅僅是為了雲音樂Cloud
- 僅用六種字元來完成Hello World,你能做到嗎?字元
- CDP營銷方案 不僅僅是資料整合!
- 前端魔法堂——異常不僅僅是try/catch前端
- 程式設計師不僅僅是寫程式碼程式設計師
- Kibana:Kibana 不僅僅是針對開發者的 - 它是為所有人開發的
- 資料隱私不僅僅是指機密性
- 為什麼 async/await 不僅僅是句法糖AI
- 實踐敏捷估算(1)——不僅僅是估不準的問題敏捷
- AI是一個真正的系統而不僅僅是軟體AI
- Apache Flink,流計算?不僅僅是流計算!Apache
- DBA不僅僅是管理資料庫--也要管理好需求資料庫
- 拿工資不僅僅是讓你寫程式碼的
- 雲不僅僅是一種全新的IT基礎設施
- 低程式碼平臺不僅是一款開發工具
- §1.2 Android專案結構及“Hello World”應用解析Android
- 不僅僅是前端er——折騰伺服器武裝自己前端伺服器
- 重要 | Spark和MapReduce的對比,不僅僅是計算模型?Spark模型
- 【虹科分享】Redis 不僅僅是記憶體資料庫Redis記憶體資料庫
- DBA不僅僅是管理資料庫--也要管理中介軟體資料庫
- 榮耀路由2S評測:顏值出眾,不僅僅只是好看這麼簡單路由
- HarmonyOS應用開發——Hello World
- Valve正在招聘各種學術人才,不僅僅是做遊戲遊戲
- 深入理解BERT Transformer ,不僅僅是注意力機制ORM
- SmartCode—不僅僅是功能強大的程式碼生成器
- IBM Watson啟示錄:AI不應該僅僅是炫技IBMAI
- 為什麼說六西格瑪不僅僅是資料運算
- 智慧手機紅辣椒金典評測:不僅僅是實惠
- iPhone5,釋出的不僅僅是一部手機iPhone
- AI之父:大模型不僅僅是預測下一個符號AI大模型符號