2010年9月30日

ぐるぐるまわるボタン

GDD2010jpで見た、押すとぐるぐるまわるボタンが面白かったので実装してみました。

apkファイル。
http://greety.sakura.ne.jp/redo/apps/GuruguruButton.apk
Eclipseプロジェクトなソース。
http://greety.sakura.ne.jp/redo/apps/GuruguruButton.zip

negikegani1.png

続きを読む "ぐるぐるまわるボタン"

2010年9月26日

Styleを使おう

Androidでは大半のレイアウト、UI構造をXMLで記載しますが、きちんとStyleを使うとコードがすっきりする上に、同様の画面を複数つくった際の調整コストが大きく下がりますよ、と。

参考:
Android developers:Applying Styles and Themes
http://developer.android.com/guide/topics/ui/themes.html
mucchinのAndroid戦記:Androidアプリで使う文字列のスタイルを統一する方法
http://android.roof-balcony.com/resource/style/

以下の様な画面を「Styleなし」と「Styleあり」で作成した際にどうなるかを記します。

xml1.png

続きを読む "Styleを使おう"

2010年9月25日

#gdd2010jp の詳細予定を立てよう。

備忘録備忘録。

【関連URL一覧】
Googole Developer Day 2010
http://www.google.co.jp/events/developerday/2010/tokyo/
タイムテーブルはアジェンダがわかりやすい。
http://www.google.co.jp/events/developerday/2010/tokyo/agenda.html
GDDのLT演目
http://groups.google.com/group/tokyo-gtug/browse_thread/thread/e01e6da28c090bd7
Bootcamp 2010
http://sites.google.com/site/tokyogtugusersite/bootcamp-2010

【概要】
・2010.09.27 ボランティアで参加。
・2010.09.28 DevQuizはSH枠通過で通常参加。Androidメイン。

【詳細スケジュール】

○2010.09.27(月)
09:00 ボランティアスタッフ集合 D棟6F
09:00-11:00 リハ
13:00-14:00 1Fエレベータ前 誘導9
16:00-17:00 D5前 誘導9 ネームタグ回収

○2010.09.28(火)

09:00 開場
10:00-11:45 基調講演
12:00-17:00 デベロッパーサンドボックス
12:00-12:45 B5-1 Cool APIs 未来のソーシャルウェブを占う
13:00-13:45 B7-1 高性能な Android アプリを作るには
14:00-14:45 B7-1 マーケットライセンシングを使って Android アプリケーションを守るには
15:00-15:45 B7-1 クールな Android アプリを作るには
16:00-16:45 B7-1 Android でリアルタイムゲームを開発する方法: リベンジ
17:00-19:00 LT
19:00-21:00 GDD 2010 交流会
20:00-22:00 つ部迎撃

2010年9月17日

Maaaaaaaaps

MapViewというか、Androidアプリで地図を使ってみる。

Android Developers公式:Location and Maps
http://developer.android.com/guide/topics/location/

地図/位置情報/GPSを使うAndroidアプリを作るには
http://www.atmarkit.co.jp/fjava/rensai4/android16/android16_2.html

throw Life:AndroidでGoogle Mapsを使う最も簡単なサンプル
http://www.adamrocker.com/blog/230/android_maps_the_simplest_sample.html


==========!!ああっと!!==========
SDKをr07にバージョンアップしたらプチハマリしました。
SDK Setup.exeがなくなって、SDK Manager.exeになってます。

しかも単体で起動するとError。
(※Eclipseのメニューから実行する分には問題ない。)

Exception in thread "main" java.lang.NoSuchFieldError: marginWidth
at com.android.sdkuilib.internal.repository.UpdaterWindowImpl.createContents(UpdaterWindowImpl.java:131)
at com.android.sdkuilib.internal.repository.UpdaterWindowImpl.open(UpdaterWindowImpl.java:102)
at com.android.sdkuilib.repository.UpdaterWindow.open(UpdaterWindow.java:113)
at com.android.sdkmanager.Main.showMainWindow(Main.java:307)
at com.android.sdkmanager.Main.doAction(Main.java:259)
at com.android.sdkmanager.Main.run(Main.java:98)
at com.android.sdkmanager.Main.main(Main.java:87)

↓結局こうなって袋小路に入りました。
http://twitter.com/youten_redo/status/24677511046

android.batをいじってC:\Program Files\Java\jdk1.6.0_21\bin\java.exeを設定すると回避できました。
...マイPCのJDK環境が怪しいだけな気もします。

==========リセットして華麗に再開==========

○Maps API Key

・debug.keystoreからフィンガープリントを生成。
・パスワードは入力なしのEnterでokでした。

○@ITのサンプルを動かす。

・ソースをダウンロードしてインポート
・@Overrideまわりでエラーが出たのでソースを微修正。
・Xperiaで動かないと困るのでdefault.propertiesのtargetをGoogle Inc.:Google APIs:7からGoogle Inc.:Google APIs:4に修正。
・strings.xmlに格納されているAPI Keyを先ほど取得した自分のものに変更。

おk、問題なし。

○Trackingのサンプルを動かしたらGPSアイコンが点灯しっぱなしが気になった。

onPause()にMyLocationOverlay#disableMyLocationを、onResume()にMyLocationOverlay#enableMyLocationを追加するだけでした。


○参考になるページがいっぱい

橋本商会:
http://shokai.org/blog/archives/5180
http://shokai.org/blog/archives/5174

androside.com:
http://androside.com/android_contentlist.html

2010年9月12日

【中世箱庭MMORPG】PEO2.0 PvP(War Zone)実装されたよ【Pocket Empires Online】

というわけでPEOが2.0になって、PvP(War Zone)が導入されました。

ルールは複雑なんで公式を見てね★
Pocket Empires Online:War Zone
http://www.pocket-play.com/war-zone

今回はStrongHold見てきたよと、StateCapitalとってみたよ、編です。

続きを読む " 【中世箱庭MMORPG】PEO2.0 PvP(War Zone)実装されたよ【Pocket Empires Online】"

2010年9月 7日

XMLなDrawableを使ってみよう

AndroidのDrawableにはPNGとかJPGとか直接放り込んだり、あるいは押したり離したり選択されたりとか言った、状態付きButtonをXMLで...ぐらいがよく使われるトコロですが、意外なモノがDrawableの範疇にあったりします。

Drawable Resources
http://developer.android.com/guide/topics/resources/drawable-resource.html

で、このうち最後のShape Drawableというものが、塗りとか線とかがかけます。

shapeとかgradientとかみてもさっぱりだと思うので、実例を以下に。

たとえば、グラデーション背景+小物みたいな以下の画像があったとします。

car.png

これを普通にImageViewではっつけると、こうなります。

car_cap1.png

で、背景部分だけサイズ可変にしたいとか、そもそも画面解像度が上がってくると、この様な単純なグラデーションPNGやJPGでも、ファイルサイズが意外とバカにできません。

そんな際には、XMLでDrawableを書いてしまいます。

drawable/blueback.xml


<?xml version="1.0" encoding="utf-8"?>
<!-- blue-naname-grade -->
<shape
	xmlns:android="http://schemas.android.com/apk/res/android">
	<gradient
			android:startColor="#55AAFF"
			android:endColor="#0022FF"
			android:angle="135"
	/>
</shape>

layout/main.xml


<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
	xmlns:android="http://schemas.android.com/apk/res/android"
	android:layout_width="fill_parent"
	android:layout_height="fill_parent"
	android:background="@drawable/blueback">
	<LinearLayout
		android:orientation="horizontal"
		android:layout_width="fill_parent"
		android:layout_height="fill_parent"
		android:background="@drawable/pat_tiled">

		<ImageView
			android:src="@drawable/car1"
			android:layout_width="wrap_content"
			android:layout_height="wrap_content"
			android:layout_gravity="center"
			android:layout_weight="1"
			android:scaleType="center" />
		<ImageView
			android:src="@drawable/car2"
			android:layout_width="wrap_content"
			android:layout_height="wrap_content"
			android:layout_gravity="center"
			android:layout_weight="1"
			android:scaleType="center" />
	</LinearLayout>
</FrameLayout>

背景を除いた小物部分は別途ちまちまと張ってください。

car_cap2.png

するとこうなります。

drawableはどこまでも可変ですから、横にしてもグラデーションは問題ありません。

car_cap3.png

※小物が変なのは突っ込んじゃいけません><

XMLなdrawableと、tiledなXML drawableを組み合わせると...。

pat1.png

car_cap4.png

こんなことにもなります。

どこまで実画像でやって、どこまでXMLでやって、どこまでコードでやるかはセンスの問題だと思いますが、個人的には慣れれば慣れるほど小物XMLがdrawable、include、inflate用に増えていく気がします。広義のオブジェクト指向というか...。

P.S. SyntaxHighlighterがおかしいらしく、XMLが変です。自己閉じ型が勝手に変な変換される...。

2010年9月 6日

Android Hacks買った。


ah01.jpg

分厚いです。
ちまちま読んでます。

そういえば表紙のスケボーですが。

droid.gif

多分これです。

ご存知ボリュームダウンキーを押しながら電源を入れる人とちょっと仲良しのドロイド君です。


初級は流し読みするか...と思ったけどエミュレータ関連で知らないことばっかりでした。ちゃんと読もう。

SMS送受信とか通話とか、そもそもエミュレータを2台同時に起動したことがミス以外でないと言う...。