ไลบรารี่ Anko
- การเรียกใช้ไลบรารี่ Anko
- การใช้ Toast
- การใช้ SnackBars
- การใช้ SnackBars แบบมี action
- การใช้ Alerts
- การใช้ Selectors
1.การเรียกใช้ไลบรารี่ Anko
build.gradle (Project: MyApplication)
// Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { ext.kotlin_version = '1.3.31' ext.anko_version = '0.10.8' repositories { google() jcenter() } dependencies { classpath 'com.android.tools.build:gradle:3.4.1' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } allprojects { repositories { google() jcenter() } } task clean(type: Delete) { delete rootProject.buildDir }
บรรทัดที่ 5 กำหนดเลขเวอร์ชันของ anko
build.gradle (Module: app)
apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' android { compileSdkVersion 28 defaultConfig { applicationId "com.phaisarn.myapplication" minSdkVersion 21 targetSdkVersion 28 versionCode 1 versionName "1.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } } dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" implementation 'androidx.appcompat:appcompat:1.0.2' implementation 'androidx.core:core-ktx:1.0.2' implementation 'androidx.constraintlayout:constraintlayout:1.1.3' implementation "org.jetbrains.anko:anko:$anko_version" testImplementation 'junit:junit:4.12' androidTestImplementation 'androidx.test:runner:1.2.0' androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0' }
ถ้าไม่ต้องการใช้ทั้งหมด ก็เลือกเอาตามนี้
// Anko Commons implementation "org.jetbrains.anko:anko-commons:$anko_version" // Anko Layouts implementation "org.jetbrains.anko:anko-sdk25:$anko_version" // sdk15, sdk19, sdk21, sdk23 are also available implementation "org.jetbrains.anko:anko-appcompat-v7:$anko_version" // Coroutine listeners for Anko Layouts implementation "org.jetbrains.anko:anko-sdk25-coroutines:$anko_version" implementation "org.jetbrains.anko:anko-appcompat-v7-coroutines:$anko_version" // Anko SQLite implementation "org.jetbrains.anko:anko-sqlite:$anko_version"
2.การใช้ Toast
การใช้ Toast เรียกใช้ org.jetbrains.anko:anko-commons
implementation "org.jetbrains.anko:anko-commons:$anko_version"
เรียก toast()
ของ Anko น่าจะเหมือนกับ Toast.LENGTH_SHORT
package com.phaisarn.myapplication import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import org.jetbrains.anko.toast class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) toast("Hi there!") } }
เรียก longToast()
ของ Anko น่าจะเหมือนกับ Toast.LENGTH_LONG
package com.phaisarn.myapplication import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import org.jetbrains.anko.longToast class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) longToast("Wow, such duration") } }
3.การใช้ SnackBars
การใช้ SnackBars เรียกใช้ org.jetbrains.anko:anko-design
implementation "org.jetbrains.anko:anko-design:$anko_version"
ที่ activity_main.xml เปลี่ยนมาใช้ androidx.coordinatorlayout.widget.CoordinatorLayout
<?xml version="1.0" encoding="utf-8"?> <androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/coordinatorLayout" tools:context=".MainActivity"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello World!" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent"/> </androidx.coordinatorlayout.widget.CoordinatorLayout>
เรียก snackbar()
package com.phaisarn.myapplication import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import kotlinx.android.synthetic.main.activity_main.* import org.jetbrains.anko.design.snackbar class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) coordinatorLayout.snackbar("Hi there!") } }
เรียก longSnackbar()
package com.phaisarn.myapplication import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import kotlinx.android.synthetic.main.activity_main.* import org.jetbrains.anko.design.longSnackbar class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) coordinatorLayout.longSnackbar("Wow, such duration") } }
4.การใช้ SnackBars แบบมี action
เมื่อ touch ที่ CLICK ME! ใน SnackBars จะเรียก Toast ขึ้นมาแสดง
implementation "org.jetbrains.anko:anko-commons:$anko_version" implementation "org.jetbrains.anko:anko-design:$anko_version"
package com.phaisarn.myapplication import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import kotlinx.android.synthetic.main.activity_main.* import org.jetbrains.anko.design.snackbar import org.jetbrains.anko.toast class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) coordinatorLayout.snackbar("Action, reaction", "Click me!") { doStuff() } } fun doStuff() { toast("Hello World"); } }
บรรทัดที่ 15 กำหนด action เรียก doStuff()
ให้ snackbar()
5.การใช้ Alerts
implementation "org.jetbrains.anko:anko-commons:$anko_version"
package com.phaisarn.myapplication import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import org.jetbrains.anko.alert import org.jetbrains.anko.noButton import org.jetbrains.anko.toast import org.jetbrains.anko.yesButton class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) alert("Hi, I'm Roy", "Have you tried turning it off and on again?") { yesButton { toast("Oh…") } noButton {} }.show() } }
6.การใช้ Selectors
เมื่อเลือกรายการจาก Selectors แล้วจะแสดง Toast เมืองที่เราเลือก
implementation "org.jetbrains.anko:anko-commons:$anko_version"
package com.phaisarn.myapplication import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import org.jetbrains.anko.* class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val countries = listOf("Russia", "USA", "Japan", "Australia") selector("Where are you from?", countries, { dialogInterface, i -> toast("So you're living in ${countries[i]}, right?") }) } }
Link