Androidアプリをつくった覚書
アプリの概要
機能
boketeのようなアプリ。ユーザーがドヤ顔写真をアップロードしてその評価を競う。
必要なのはおよそ以下の機能
- AWS S3へ画像のアップロード
- Redisサーバへの登録
- アプリでの評価をRedisサーバに反映する
- 画像とその情報をアプリで取得する
画面の構成
一つの画面内にIMAGE LISTとRANKINGの二つのタブを表示する。それぞれのタブはリストでできている。
IMAGE LISTはリストの各要素に画像とその得点および評価ボタンを含む。
RANKINGは1位から10位までを表示し、各要素に画像、得点、順位を持つ。
やったことなど
ネットワーク通信はAsyncTaskを使う
Androidではメインスレッドで画像のアップロード、ダウンロード等の通信を行えない。なので通信を別スレッドで行うためにAsyncTaskを継承したクラスを実装しなければならない。とてもめんどくさい。それを楽にするためにAsyncTaskLoaderというのがあるらしいが使っていないので詳しくは知らない。
AsyncTaskと似たようやつでVolleyというのもあるらしい。
AsyncTaskを使った非同期処理のきほん | Developers.IO
ネットワーク通信用ライブラリVolleyを使いこなす | Tech Booster
リストビューのカスタマイズ
簡単なテキストだけのリストを作るならListViewとArrayAdapterをそのまま使えばよい。テキスト以外の要素をリストにするにはArrayAdapterを継承したクラスを実装する。最低限必要なのはgetViewだけなのでそれほど大変ではない。
現在はgetViewが呼ばれるたびに通信が発生する作りなので、最初に呼ばれたときのみ通信するようにすべきだ。
リストビューをカスタマイズする « Tech Booster
ArrayAdapterをつかったカスタムリスト - なか日記
タブの実装
ActionBarのタブナビゲーションを利用してタブを実装できる。これによりFragmentを切り替えれる。
アクションバーのタブ・ナビゲーション - Android 開発入門
Redis
今回はランキングを作りたかったのでSorted Setsを使った。ライブラリはJedis。