#復習
Android DevelopのトレーニングをKotlinでやってみる -Building Your First App[1]-
http://qiita.com/kamedon39/items/8b814a0d7f0e826cf363
とりあえずKotlin化して実行までできた。
#Building Your First Appの続き
##Building a Simple User Interface
The graphical user interface for an Android app is built using a hierarchy of View and ViewGroup objects
User InterfaceにはViewとViewGroupの2つあるみたい。
View:ButtonとかTextView...
ViewGroup:LinearLayoutとかRelativeLayout ....
自作でビューを作るときもこの2つのどちらかを継承すればxmlに記述して、呼び出せますね。
以下の5つはkotlinに関係ないので、割愛。xmlに反映します。
###Create a Linear Layout
###Add a Text Field
基本的なView,ViewGroupをxmlで記述する際の設定項目について書かれてる
###Add String Resources
Stringを記述の仕方が書かれてる
###Add a Button
以上のことを組み合わせて一つのレイアウトを組み合わせてつくってある
###Make the Input Box Fill in the Screen Width
Viewのサイズ調整についてかかれてる
特に注目すべきは、LinearLayoutでレイアウトでよく出てくるandroid:layout_widthが0dp、layout_weightが1の設定。
コンテンツの大きさを設定してるんじゃない!余った領域(余白)の分配だ。
今回はKotlinに注目してるので、割愛する。
この辺を参考に。
http://murakaming.hatenablog.com/entry/20110712/1310457296
<EditText
android:layout_weight="1"
android:layout_width="0dp"
... />
##Starting Another Activity
###Respond to the Send Button
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/button_send"
android:onClick="sendMessage" />
個人的にはこの書き方は、好きではない。
Activityなどから見た時にどのボタンがどの処理と結びついてるかわからないためである。
ちょっと冗長になるけど、
<Button
android:id="@+id/btn_send"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/button_send"/>
findViewById(R.id.btn_send).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d("MainActivity", "click: btn_send")
}
});
のほうがどのボタンでどの処理が結びついてるから良いと思ってる。
最近だとこれすら面倒ってことでButterKnifeを使って、アノテーションで書いたりするの多い記事が多い。
http://jakewharton.github.io/butterknife/
@OnClick(R.id.btn_send)
void clickSend(View v) {
Log.d("MainActivity", "click: btn_send")
}
だけど、未定義だったり、落ちたりするとエラーメッセージが面倒だったりする。。。
Kotlinだと
findViewById(R.id.btn_send).setOnClickListener { view -> Log.d("MainActivity", "click: btn_send") };
でもsetContextViewでしてるlayoutのviewをfindViewByIdをするのは小学生までだよね。。。
せっかくKotlinを使ってるならkotterknife
https://github.com/JakeWharton/kotterknife
確かに使用感はKotlin版ってだけで、良いんだけど。Kotlinの良さをフルに活かしきれてない感が。。。
AndroidStudioのplugin都の組み合わせになるけど、Kotlin Android Extensionsがおすすめだ。
https://kotlinlang.org/docs/tutorials/android-plugin.html
次回脱線するけどKotlin Android Extensionsを紹介する
Respond to the Send Buttonの触りまで終了。