Kotlinの勉強始めました。
環境
このコードは以下の環境で書いています。
- macOS 10.14.2(Mojave)
- Android Studio 3.2.1
- Android SDK 28
- gradle 4.6
レイアウトファイル
デザインタブから「Button」を挿入する。
テキストタブでレイアウトやコードの微修正します。
xml1<?xml version="1.0" encoding="utf-8"?> 2<android.support.constraint.ConstraintLayout 3 xmlns:android="http://schemas.android.com/apk/res/android" 4 xmlns:tools="http://schemas.android.com/tools" 5 xmlns:app="http://schemas.android.com/apk/res-auto" 6 android:layout_width="match_parent" 7 android:layout_height="match_parent" 8 tools:context=".MainActivity"> 9 10 <TextView 11 android:id="@+id/tvHello" 12 android:layout_width="wrap_content" 13 android:layout_height="wrap_content" 14 android:text="Hello World!" 15 app:layout_constraintTop_toTopOf="parent" //[a] 16 app:layout_constraintBottom_toBottomOf="parent" //[b] 17 app:layout_constraintLeft_toLeftOf="parent" // 18 app:layout_constraintRight_toRightOf="parent" /> //[d] 19 <Button 20 android:id="@+id/btnTouchMe" 21 android:text="Touch me!" 22 android:layout_width="wrap_content" 23 android:layout_height="wrap_content" 24 android:layout_marginStart="8dp" 25 android:layout_marginEnd="8dp" 26 android:layout_marginTop="8dp" 27 android:layout_marginBottom="8dp" 28 app:layout_constraintTop_toBottomOf="@+id/tvHello" //[a] 29 app:layout_constraintBottom_toBottomOf="parent" //[b] 30 app:layout_constraintStart_toStartOf="parent" // 31 app:layout_constraintEnd_toEndOf="parent" /> //[d] 32 33</android.support.constraint.ConstraintLayout> 34
android:id=
は一番上にあるのが個人的に好きなので持ってきました。
[a]~[d]ではConstraintLayoutがデフォルトで使用されているので、「このオブジェクトの(上/下/左/右)に配置する」を指定するコードを記述しています。
Activityファイル
Java1class MainActivity : AppCompatActivity() { 2 3 override fun onCreate(savedInstanceState: Bundle?) { 4 super.onCreate(savedInstanceState) 5 setContentView(R.layout.activity_main) 6 7 8 //レイアウトファイルで宣言したボタンウィジェットを読み込む [1] 9 val touchMeButton: Button = findViewById(R.id.btnTouchMe) as Button 10 //レイアウトファイルで宣言したテキストビューを読み込む [2] 11 val helloText: TextView = findViewById(R.id.tvHello) as TextView 12 13 14 //ボタン押下時の処理[3] 15 touchMeButton.setOnClickListener{ 16 tvHello.text = "Good!" 17 } 18 } 19} 20
Buttonに関するコードを記述します。 Buttonをクリックすると、テキストが変わる仕組みです。
Button [1]、[2]
Button
クラスを helloButton
という名前で宣言すると同時に、レイアウトファイルに用意したButtonのIDを引っ張ってきます。
また、[2]で書いているTextViewの内容も同様です。
val
は定数。 Javaのfinalと同じ。基本はこっちで宣言するといい。var
は変数。 後々変数の中身を別の値で再代入する場合に利用する。touchMeButton: Button
Button型の定数をtouchMeButon
という名前で用意するas Button
Button型にキャストしています。
Button [3]
Buttonクラスが持つメソッドsetOnClickListener
を使って、ボタンがタップされた時の動作を記述している。
この時、touchMeButton
(すなわちButtonクラス)がどんなメソッドを持っているかはここで調べられる。
public class button
Activityファイル(別の書き方)
Kotlin Android extentionsが有効であれば、以下のような書き方もできます。
Java1class MainActivity : AppCompatActivity() { 2 3 override fun onCreate(savedInstanceState: Bundle?) { 4 super.onCreate(savedInstanceState) 5 setContentView(R.layout.activity_main) 6 7 btnTouchMe.setOnClickListener{ 8 tvHello.text = "Good!" 9 } 10 } 11} 12 13
Javaで書く場合と比べて恐ろしく短い・・・。
リンク
次回の記事
次回はImage ViewとImage Buttonです。 【Android App with Kotlin #2】画像を取り扱う(ImageView/ImageButton)
/以上
よかったらシェアしてください!