AndroidアプリをKotlinで作ろうとしてみた 1日め
何はともあれボタンと文字、おまけで、トースト
開発環境:Android Studio 3.2.1 (Windows 10 Pro)
デバッグ環境:HTC U Play
機能:
- 文字列「%s$d」を表示させる。
- 「SELECT」ボタンを押すとトースト「テストメッセージです」が出る。
プログラムとレイアウト
MainActivity.kt
package com.example.ああああ.myapplication
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
import android.widget.Toast
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val いいいい: Button = findViewById(R.id.うううう)
いいいい.setOnClickListener {
Toast.makeText(this, "テストメッセージです", Toast.LENGTH_SHORT).show()
}
}
}
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
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"
tools:context=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/ええええ"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:textColor="@color/colorAccent" android:id="@+id/ええええ"
app:layout_constraintHorizontal_bias="0.501" app:layout_constraintVertical_bias="0.355"/>
<Button
android:text="@string/うううう"
android:layout_width="wrap_content"
android:layout_height="wrap_content" android:id="@+id/うううう"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintBottom_toBottomOf="parent" android:layout_marginTop="83dp"
app:layout_constraintTop_toBottomOf="@+id/うううう" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintVertical_bias="0.473"/>
</android.support.constraint.ConstraintLayout>
strings.xml
<resources>
<string name="app_name">My Application</string>
<string name="ええええ">%s$d</string>
<string name="うううう">select</string>
</resources>
ここが詰まった
USBデバッグでAndroid実機に送ったアプリが即落ちる
原因が複数あって手間取りましたが、
- そもそも実機用のUSBドライバーが入っていなかった
OEM USB ドライバのインストール | Android Developers
- val型のButton用変数の定義をonCreateの外側に書いていた
明示的に書かない限り変数は全部privateなのかな。
もっと短く書けるみたいだけどビルドに失敗した
Kotlin Android Extensionsを使ってもっとお洒落なコードにしたかったけれどできなかった。
書きながら調べてみたところ、単純にプラグインを入れていなかっただけのようでした。build.gradleを触っていなかった。
ここが面白かった
とはいえ短い
明示的に定義するあれこれがJavaより少ない気がします。また、かかった時間についてもコードとレイアウト分だけで考えるととても短いです。
次はExtensionsも使ってもっと短く、かつ分かりやすくできたらいいなと。
レイアウトの編集が楽しい
これまでGUIを編集することがあまりなかったこともあり、直感的な編集が楽しかったです。
次はこうしたい
画像を表示させたい
文字と場所が重なる時どうなるのか気になる。
変数を使って文字を変えたい
どうせならボタンを押した時に変えてみたい。
手元に紙の本があるという謎の心強さ
ペラペラめくれる is つよい。とりあえず一冊買ってみました。
Kotlinのサンプルが多く写経でのレベルアップを期待する面もあります。
以下、やってみようと思ったきっかけです。
身近なものを新しい何かで作ろうと思った
Pythonは面白いけれど
その面白さを十分に味わうためには
- パソコンの前に座り続ける
あるいは
- サーバーを用意する
ことが必要な場面が多いなと思うようになってきました。
レンタルサービス上に何かサービスを構築するのも楽しそうですが、気が向いた時にだけ遊びそうなので月額課金を考えて一旦保留にしました。
身近×最新=やってみよう
ディスプレイを触っている時間を可視化したら気持ち悪くなりそうなぐらい、スマートフォンが身近な生活をしているので、どうせならスマートフォン用アプリを作ってみようと思いました。
以前何かしらのkotlinカンファレンスの写真を見て面白そうだなと思った記憶もあり、ミーハーに手を出してみようと思った次第です。
Javaの経験はあまりないのですが、以前試験用プログラムを何点か作った経験を思い起こしながら挑戦しています。