Android中使用Kotlin實(shí)現(xiàn)一個簡單的登錄界面
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ā)語言。
剛接觸Kotlin的第一天,仿照QQ的登錄界面,先寫一個簡單的登錄界面,雖然筆者用的不是很熟,還在慢慢摸索,但是Kotlin是真的很簡潔,筆者的實(shí)現(xiàn)效果如下:

登錄界面代碼如下:
class LoginActivity : AppCompatActivity(), View.OnClickListener {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
//setContentView(R.layout.activity_login)
LoginUi().setContentView(this@LoginActivity)
}
lateinit var et_account: EditText
lateinit var et_password: EditText
inner class LoginUi : AnkoComponent<LoginActivity> {
override fun createView(ui: AnkoContext<LoginActivity>) = with(ui) {
verticalLayout {
backgroundColor = context.resources.getColor(android.R.color.white)
gravity = Gravity.CENTER_HORIZONTAL
imageView(R.drawable.touxiang).lparams {
width = dip(100)
height = dip(100)
topMargin = dip(64)
}
linearLayout {
gravity = Gravity.CENTER_VERTICAL
orientation = HORIZONTAL
backgroundResource = R.drawable.bg_frame_corner
imageView {
image = resources.getDrawable(R.mipmap.ic_username)
}.lparams(width = wrapContent, height = wrapContent) {
leftMargin = dip(12)
rightMargin = dip(15)
}
et_account = editText {
hint = "登錄賬戶"
hintTextColor = Color.parseColor("#666666")
textSize = 14f
background = null
}.lparams {
topMargin = dip(5)
}
}.lparams(width = dip(300), height = dip(40)) {
topMargin = dip(30)
}
linearLayout {
gravity = Gravity.CENTER_VERTICAL
orientation = HORIZONTAL
backgroundResource = R.drawable.bg_frame_corner
imageView {
image = resources.getDrawable(R.mipmap.ic_password)
}.lparams(width = wrapContent, height = wrapContent) {
leftMargin = dip(12)
rightMargin = dip(15)
}
et_password = editText {
hint = "賬戶密碼"
hintTextColor = Color.parseColor("#666666")
textSize = 14f
background = null
}.lparams {
topMargin = dip(5)
}
}.lparams {
width = dip(300)
height = dip(40)
topMargin = dip(10)
}
button("登錄") {
gravity = Gravity.CENTER
background = resources.getDrawable(R.drawable.bg_login_btn)
textColor = Color.parseColor("#ffffff")
textSize = 18f
onClick {
if (et_account.text.toString().isNotEmpty() && et_password.text.toString().isNotEmpty())
startActivity<MainActivity>() else toast("請輸入賬戶或者密碼")
}
}.lparams(width = dip(300), height = dip(44)) {
topMargin = dip(18)
}
linearLayout {
orientation = HORIZONTAL
gravity = Gravity.CENTER_VERTICAL
checkBox("記住密碼") {
textColor = Color.parseColor("#666666")
textSize = 16f
leftPadding = dip(5)
}
textView("新用戶注冊") {
textColor = Color.parseColor("#1783e3")
gravity = Gravity.RIGHT
textSize = 16f
}.lparams(width = matchParent)
}.lparams(width = dip(300)) {
topMargin = dip(18)
}
textView("Copyright © Henry") {
textSize = 14f
gravity = Gravity.CENTER or Gravity.BOTTOM
}.lparams {
bottomMargin = dip(35)
weight = 1f
}
}
}
}
override fun onClick(v: View) {
when (v.id) {
}
}
}
實(shí)現(xiàn)出來的效果和我們設(shè)置布局文件所實(shí)現(xiàn)的效果一樣,但是相比使用布局文件來說,使用Kotlin將會更加的簡潔明了,省去了定義變量和查找布局文件的操作,大大解放了我們程序員;
下面的代碼所示是筆者使用布局文件實(shí)現(xiàn)的布局效果,和上面的效果一樣,但是會復(fù)雜很多,大家可以自己自己體會一下;
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center_horizontal"
android:background="#ffffff"
android:orientation="vertical"
android:padding="40dp">
<de.hdodenhof.circleimageview.CircleImageView
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/profile_image"
android:layout_width="96dp"
android:layout_height="96dp"
android:layout_gravity="center_horizontal"
android:src="@drawable/touxiang"
app:civ_border_color="#FF000000"
app:civ_border_width="2dp" />
<LinearLayout
android:id="@+id/lin_count"
android:layout_width="300dp"
android:layout_height="40dp"
android:layout_marginTop="45dp"
android:background="@drawable/bg_frame_corner"
android:gravity="center_vertical"
android:orientation="horizontal">
<ImageView
android:layout_width="wrap_content"
android:layout_height="25dp"
android:layout_marginLeft="12dp"
android:layout_marginRight="15dp"
android:src="@drawable/count" />
<EditText
android:id="@+id/loginAccount"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@null"
android:hint="登錄賬戶"
android:maxLength="11"
android:textSize="16sp" />
</LinearLayout>
<LinearLayout
android:id="@+id/lin_password"
android:layout_width="300dp"
android:layout_height="40dp"
android:layout_marginTop="10dp"
android:background="@drawable/bg_frame_corner"
android:gravity="center_vertical"
android:orientation="horizontal">
<ImageView
android:layout_width="wrap_content"
android:layout_height="25dp"
android:layout_marginLeft="12dp"
android:layout_marginRight="15dp"
android:src="@drawable/password"/>
<EditText
android:id="@+id/loginPassword"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@null"
android:hint="賬戶密碼"
android:password="true"
android:maxLength="11"
android:textSize="16sp"/>
</LinearLayout>
<Button
android:id="@+id/login_button"
android:layout_width="300dp"
android:layout_height="44dp"
android:layout_gravity="center"
android:background="@drawable/bg_login_btn"
android:layout_marginTop="18dp"
android:text="登錄"
android:textColor="#ffffff"
android:textSize="18sp" />
<LinearLayout
android:id="@+id/lin_remember"
android:layout_width="300dp"
android:layout_height="wrap_content"
android:layout_marginTop="18dp"
android:gravity="center_vertical"
android:orientation="horizontal">
<CheckBox
android:id="@+id/rem_pas_check"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="5dp"
android:text="記住密碼"
android:textColor="#666666"
android:textSize="16sp" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="right"
android:text="新用戶注冊"
android:textColor="#1783e3"
android:textSize="16sp" />
</LinearLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="35dp"
android:layout_weight="1"
android:gravity="bottom|center"
android:text="Copyright © Henry"
android:textSize="14sp" />
</LinearLayout>
總結(jié)
以上所述是小編給大家介紹的Android Kotlin實(shí)現(xiàn)一個簡單的登錄界面,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
Android?JetPack組件的支持庫Databinding詳解
DataBinding是Google發(fā)布的一個數(shù)據(jù)綁定框架,它能夠讓開發(fā)者減少重復(fù)性非常高的代碼,如findViewById這樣的操作。其核心優(yōu)勢是解決了數(shù)據(jù)分解映射到各個view的問題,在MVVM框架中,實(shí)現(xiàn)的View和Viewmode的雙向數(shù)據(jù)綁定2022-08-08
Android小程序?qū)崿F(xiàn)個人信息管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了Android小程序?qū)崿F(xiàn)個人信息管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-05-05
Android中使用imageviewswitcher 實(shí)現(xiàn)圖片切換輪播導(dǎo)航的方法
ImageSwitcher是Android中控制圖片展示效果的一個控件。本文給大家介紹Android中使用imageviewswitcher 實(shí)現(xiàn)圖片切換輪播導(dǎo)航的方法,需要的朋友參考下吧2016-12-12
Android 利用方向傳感器實(shí)現(xiàn)指南針具體步驟
Android利用方向傳感器實(shí)現(xiàn)指南針功能,聽起來還不錯吧,下面與大家分享下具體的實(shí)現(xiàn)步驟,感興趣的朋友可以參考下哈2013-06-06
Android開發(fā)學(xué)習(xí)筆記 Gallery和GridView淺析
這篇文章主要介紹了Android開發(fā)學(xué)習(xí)筆記 Gallery和GridView淺析,需要的朋友可以參考下2014-11-11
Android開發(fā)優(yōu)化之Apk瘦身優(yōu)化指南
隨著業(yè)務(wù)快速發(fā)展,各種業(yè)務(wù)功能上線,版本不斷迭代,apk體積也越來越大,下面這篇文章主要給大家介紹了關(guān)于Android開發(fā)優(yōu)化之Apk瘦身優(yōu)化的相關(guān)資料,需要的朋友可以參考下2022-05-05

