僕はGalaxy Nexusを手に入れることが出来たよ、あるいは独自画像でのローディング表現(Android Advent Calendar 2011 14日目)

14日目です><

こんばんはこんばんは!Android Advent Calendar 2011 14日目担当のytRinoです。

昨日のそばちゃんこさんのエントリを受け、「ぉяё маU〃 ゃレ£〃ぁωU〃ゃЙё?*1」状態であります。

そうそうたるメンバーが面白い記事を書いてる中、爆笑ネタも黒魔術ももってない僕は何を書こうか迷ったのですが、
以前ちらっとTLであいこんぐるぐるがーって話を見かけたときに「ですかね?」などと軽く答えてしまったものの自分のアプリ見直したら全然別物使ってたのでそれの紹介をしたいと思います。
本当は「Androidアプリ開発に役立つ10のテクニック(キリッ」とかやりたかったんですが無理でした XD

自分で作ったローディングアイコンをぐるぐるさせたい

ここで言うローディングはIndeterminateなローディングです。つまり進行度の表現がないやつです。

標準で使えるぐるぐるもいいけどせっかくなので自分で作った画像を回してみます。
用意するもの:

  • 回りそうな画像(透過png)
  • 設定XML
画像

今回は自分のアプリでも使ってる陰陽玉をつかいます。
よく回りそうですね。
この画像は /res/drawable/ic_dialog_onmyou.png などと適当な名前をつけて放り込んでおきます。

アニメーションさせるためのリソース

簡単なアニメーションはXMLで設定できます。
回転させるためのアニメーションにというのがあるようですがここではそれは置いといて別の方法を使ってみます。

animated-rotate

animated-rotateです。アニメーションではなくみんな大好きDrawableです。
android:pivot[X|Y]で画像の回転軸を設定します。%指定が使えるので中心指定も楽ちんです。

android:drawableで回転させるDrawable(画像)を指定します。

<?xml version="1.0" encoding="utf-8"?>
<animated-rotate xmlns:android="http://schemas.android.com/apk/res/android"
    android:drawable="@drawable/ic_dialog_onmyou"
    android:pivotX="50%"
    android:pivotY="50%"
    android:duration="100"
 />

こいつ自体もDrawableなので/res/drawable/load_spin.xml などと保存しておきます。

あとはProgressBarやProgressDialogでsetIndeterminateDrawable()にこのDrawableを突っ込んであげましょう。

	private ProgressDialog dialog;
	dialog = new ProgressDialog(MyActivity.this);
	dialog.setIndeterminateDrawable(getResources().getDrawable(R.drawable.load_spin)); // さっきのDrawableを指定
	dialog.setCancelable(false);  //ただ試す場合は付けないように
	dialog.setMessage(getResources().getText(R.string.nowloading));
	dialog.show();

よく回ってます。確実に。
しかしandroid:durationが反映されてない気がするのは気のせいでしょうか。

ちなみにSDKに入ってたXMLにはandroid:framesCountという属性もあったり、Eclipseでもandroid:framesDurationとともに候補が出たりするのですがうまくいかなかったので削ってます。謎が多い。

他に書く予定候補だったもの

Android初級者が送るシリーズ

ListViewの各itemに横幅フィットさせて縦横比維持の縦クロップな画像を設定する
SQL初心者が初心者に送るAndroidSQL
AsyncTaskとネットワーク通信
BroadcastIntentキャッチした話
AIDLとサービスで玄人気分

無理でしたXD

おまけ

ドゥーコモゥ ギャアクシィネェクスゥス

そばちゃんこさんすいません、でも僕には稟議を通す相手がまず欲しいです。
というわけで12月2日、Galaxy Nexusを買いました。HT-03Aからの機種変で。
HT-03Aからの機種変で。1台持ち標準ROMで使っていたHT-03Aからの機種変で。

ドヤァ…
まあ正しくはメガネケースことIS01があるんですが、もうよくここまで使ってこれたなと誇りにすら思います。
もうぎゃらねくさんからは戻れない…


と言いたいところですがHT-03AがGalaxy Nexusに勝るいいところがあります。

  • 程よい大きさ(最近の機種はどれもでかすぎ ray欲しい)
  • トラックボール(全く見かけないんだがどういうことですか)

特にトラックボール、なぜこれほどまでに見かけないのでしょうか。文字入力の編集やアプリ/ブラウザの操作にも大活躍なのに…
苦労してリストやらselectorでfocusedの対応に悩んだこともあったのに…
何が言いたいかというと、トラックボール付き機種出してくださいお願いします!

Google「これからはソフトキー前提だわカーッ」
\(^o^)/

最後に

今年ついにAndroidでもAdventCalenderが行われました。
どうもほかの技術系Adventとは空気が違うような気がしないでもないですがそれもAndroidっぽいってことで一つ。
発起人のようてんさん@youten_redo に感謝!


そして今日(昨日?)の大ニュースといえばAndorid向け日本語入力のSimejiをバイドゥが買収 | TechCrunch Japanですね。
あだむさん@adamrocker、矢野さん@yanorinおめでとうございます!
HT-03Aのカバーの裏にはSimejiシールが貼ってあるしぎゃらねくさんになった今でもSimejiで入力してます。
HT-03Aでは「おい、いまキーボード呼んでない!」ということもありましたがやっぱりSimeji Love。
今までもこれからもありがとうございます。
GDD打ち上げで「パスポート取ったほうがいいよ」とあだむさんに言われたから11/1はパスポート取ったほうがいいよ記念日



最後に自己紹介
本エントリをご覧いただきまして、ありがとうございます。
@ytRinoっていいます。「Uたろう」って呼んでください。 うそです、「いいの」の方が落ち着きます。
大学生です。来年の春に卒業します。うそです、まだできません。
Android好きです。Java好きです。プログラミング大好きです。
デ部と町田支部と酒部には行ってるかもしれないので、僕を見かけたら声でも石でも投げてください。
どうも、ありがとうございました〜(*´▽`*)*2

Android Advent Calendar 2011、
今日の裏エントリは黒えあさん@kuroair 黒えあ-らぼ-: Androidとセキュリティ です!
明日の表エントリは、すますさん@ryosms です!
#もはや何が表で何が裏なのかさっぱりわからない

*1:訳:おれまじやばいんじゃね? id:sobachanko:20100806:1281076011

*2:via id:ngsw_taro:20111202:1322844344