unoh.github.com

レディの嗜みについて

2010-08-11 12:25:33 +0000


はじめまして
6月にウノウ株式会社改め Zynga Japan※謎 に入社致しました mayutanです。

社内全体 MTG で flickr のプレミアムユーザであることを dis られたので
弊社のサービスでありますフォト蔵の API を使って皆さん(誰?)に許していただこうと思います。

Android 端末を見たことも触ったこともなかったので、後学のためにアプリを作ってみることにしました。
タグ的な何かを選択したらそのイメージに合った写真を一覧表示するアプリを作ってみましょう。

Aandroid アプリの開発環境はこちらを参考に整えました http://developer.android.com/sdk/installing.html

ここから直感的にアプリをデザインしてみましょう!

res ディレクトリの layout/main.xml を開いてエディター下部にあります、「レイアウト」というタブをクリックしますと・・・!

なんということでしょう!!!!!!!!!!!!!!!

なんかデザインできそうなふいんき(なぜかへんかんできない)です。

黒い画面の上で、右クリック→追加を選択すると、ダイアログが出てくるので、
無難に ListView を追加します。

「VB みたいにぐいぐいーとかそれそれーとかできるんだろうな♪」
とか思ったらできねー・・・

今回は時間がないので、仕方ないのでコードで書きます。
コードはこちらお暇な方はどうぞ→Photozoroid.java

アンドロイドはまだまだ直感的には開発できないですね。がんばれアンドロイド

さて、layout/main.xml を見てみますと、ListView を追加したことにより、新しい記述も追加されていますね。
ここにある android:id="@+id/ListView01" というのが、このリストの ID です。

実際には ListView にどうやって表示させたいオブジェクトを渡すのかといいますと、setAdapter メソッドを使います。
今回は表示するリストは固定ですので、中から指定しちゃいます///

onCreate は必ず呼ばれるメソッドで必ず実装しなければいけません。
setContentView で、引数に渡した画面が呼ばれます。
ここまでくればピン!ときますね。 main.xml に記述されているやつらです。

リストを表示させるならこれ!
ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1);
adapter.add("girl");
adapter.add("food");
・・・
ListView listView = (ListView) findViewById(R.id.ListView01);
listView.setAdapter(adapter);

そして実行すると・・・!なんということでしょう・・・!

6.jpg

じゃーん。リストが出ましたね。

次はこれに onclick イベントとか実装しちゃいましょう!
それでは onClick イベントはどう実装すればいいのでしょうか。
API を見ると、どうやら AdapterView クラスが持っているこの関数を実装してやればいいらしい。

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
・・・

ここで引数にしているのは AdapterView クラスが持っているインナークラスのメソッドで、
外から呼ぶにはこうしてやります。
中見てないので適当に予想しますが、おそらく View クラスはたくさんのインターフェースを持っているのでしょう。たぶん。

次に、OnItemClickListener#onItemClick で実際にクリックされた場合の処理を実装します。

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView parent, View view, int position, long id) {
ListView listView = (ListView) parent;
String searchKeyWord = (String) listView.getItemAtPosition(position);
}
});

そして、これをキーワードにして API より取得したデータから画像を別画面に表示してみましょう。
遷移画面用の XML ファイルを res/layout に作成します。
そして、AndroidManifest.xml にこの View を登録。

次画面に遷移するために Intent クラスを使うようですね。そして、渡したいオブジェクトを putExtra してやります。
渡すデータは Serializable である必要があります。

次画面でデータを受け取り、API でキーワードから検索します。
コードはこちら→PhotozoViewer.java
このとき urlconn.connect で、"java.net.SocketException: Permission denied" が発生すると思います。
Manifest.xml に
uses-permission android:name="android.permission.INTERNET"
を追加して、自分の Android アプリからの通信を許可してあげましょう。。


さていよいよ画像の表示です。こちらを参考に作りました。
http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/Grid2.html
ほとんどサンプルのままですが、ここでは URL から読み込んだ画像 stream を Bitmap に変換して表示してみました。


last.jpg

じゃーん!

getView はいつ呼ばれるの?と思うかもしれませんが、これは View が表示されるたびに呼ばれます。

こんな感じで簡単に Web サービスと連携させたクライアントアプリケーションが作れてしまう Android には
とても可能性を感じますね!これからも色々いじってみます。



!!!まったく関係ありませんが the clovers もよろしくお願いいたします!!!