1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Android DevelopのトレーニングをKotlinでやってみる -Building Your First App[2]-

Last updated at Posted at 2015-10-27

#復習
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の触りまで終了。

##github
https://github.com/kamedon/KotlinAndroidTraining

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?