2016年1月20日水曜日

【技術メモ】Fragment で Kotlin + Anko を使ってサンプルを作った話

まもなく 1.0 の 正式リリースを迎えそうな Kotlin + Anko で Android アプリを作ってみて何作目かになったのでメモします。

ボタンだけがあって、ボタンを押すと「本当はhttp requestを投げる。今は諸般の事情で5秒寝る。」だけのアプリです。

Anko の情報があまり多くないので体系立てて覚えにくいけど、 Helper だったり細かいものが充実してきたらきっと便利かなぁ、どうかなぁ。

個人で作る分には試行錯誤が楽しいので、いまのところ欲しいツールをぽいぽい作るにはいいかなー、と思っています。

特に苦労することもないのですがあまり Fragment + Anko という組み合わせの情報が無いのでソースコードまるっとあれば何か参考になるかな的な感じです。

今回はそんなアプリの中で
  • Fragment で Anko DSL を書いて画面を作りますよ
  • ボタンを実装しますよ
  • ボタンはAsyncで呼ばれますよ
  • ボタンは連打できないようにしますよ
という感じのことをやっています。

Kotlin + Anko で Android アプリを作るときのメモ。

Fragmentで Anko DSL を書いて画面をつくりますよ

Anko の文法や公式を参考にしてください。
ざっくり一通り書いています。
本当に一通りなので結構苦労します。
大体何が実装されているのか本体のソースコードを読みに行く羽目になります。

https://github.com/Kotlin/anko


ざっくり、UI の中に各種 View を置きます。

ボタンの Listener はいきなり onClick に実装していますが Callback を指定しても OK です。

onClick は Async でタスクを流しています。
ボタンを押された時に HTTP Request を投げるだけの自前ツールなので凝ったことはしていません。

override の doInBackground は元々 HTTP をお話する部分ですが Thread.sleep(5000) で適当に寝てます。
実物はこの寝てる部分あたりで HTTP をお話ししてます。

あとは onPreExecute と onPostExecute でタップ連打をインスタントに防ぐ方法を入れてます。

return は UI の view を返して終了です。
この部分、公式にきちんと書かれていないっぽいのでこの方法が正しいのかちょっと怪しいです。

ざっと使ってみると機能ごとに Fragment 分けたり CustomView 作ったりするとちょっと Anko では使いにくいかも、という感想。
やってやれないこと無いけど、見通しよく綺麗に書ける自信はあまりないです。

終わりに

とりあえず日本語のテキストを送ると、テキスト通りしゃべるサーバが社内にいまして。

普段は時報とか、シュレッダーゴミの捨て忘れとか「気付き」を社員に振り撒く仕事がメインの子なのですが、渡したテキストは何でも喋ってくれるので、インターホンの代わりでもやってもらおうかな?

と思って、 Android ならどんな感じかな、せっかくなら Kotlin + Anko で作ってみるかな、というゆるいモチベーションで作った時のメモでした。

実際は「お客様がいらっしゃいました。」とかしゃべるだけってあまり意味が無いのと、結構鬱陶しいwのでこのバージョンはお蔵入りしそうです。

0 件のコメント :

コメントを投稿