Android: HorizontalScrollViewとScrollView

今作っているAndroid用アプリで、Desireにデフォルトで入ってるギャラリーアプリのように、画像を拡大したときにドラッグで画像内移動をできるようにしたいと思って研究中なのだけど、なかなかうまくいかない…。

最初はアニメーションで拡大したものをドラッグでと思っていたのだが、今のところこの方法ではうまくいってない。

次に、ImageViewでScaleTypeをmatrixにして、やっている最中。アニメーションはまだ実装できていないが、微妙にやれそうな感じがしている。ただ、課題も多い…。それにアニメーションを付けられるのか?という感じ…。

同僚に、「iPhoneアプリのときにはScrollViewを使って云々…」というのを聞いて、なるほど!ScrollViewを使うという方法があったか!?と思ってやってみるも、横スクロールができんじゃないか!?と思って憤慨していたら、横スクロールはHorizontalScrollViewを使えと…。で、HorizontalScrollViewを使うと今度は縦スクロールができない。なので、HorizontalScrollView内にScrollViewを入れ子にして、そのScrollView内にImageViewを入れてみたら、思っていたような感じになったかに思えた。ところが、スクロールが斜めに反応してくれない。縦にスクロールしているときは縦だけ、横にスクロールしているときは横だけにしか反応してくれないのだ。

Androidのブラウザでは、斜めに動いてくれて、その際にスクロールバーも両方(縦も横も)表示されているのに、アプリになるとできないのだろうか?謎は深まるばかり…。ちなみにこれにハマってもう3日目。精神的につらいです…。


Android: metersToEquatorPixelsが便利

GoogleMapを使ったアプリを開発中なのだけれども、指定地点から円を描きたいな〜と思っていた。円を描くこと自体は、CircleOverlayクラスを作って書けたのだけれども、問題は半径である。ピクセルで指定しなければならない。でも、ZoomLevelによって縮尺は変わるので、一体1ピクセルが何メートルなのかをどうやって出せばいいのだろうかと考えていたのだが、ふと同僚が持っているAndroidプログラミング入門を見たら、いちいち計算しなくてもメソッド一発で取得できることがわかった!1時間半も悩んだのに〜!!

private class CircleOverlay extends Overlay {
	private GeoPoint mPoint;
	
	public CircleOverlay(GeoPoint point){
		mPoint = point;
	}
	
	@Override
	public void draw(Canvas canvas, MapView mapView, boolean shadow) {
		super.draw(canvas, mapView, shadow);
		if (!shadow) {
			Projection projection = mapView.getProjection();
			Point point = new Point();
			projection.toPixels(mPoint, point);
			
			float pixels = projection.metersToEquatorPixels(10000);
			
			Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
			paint.setColor(Color.RED);
			paint.setAlpha(80);
			canvas.drawCircle(point.x, point.y, pixels, paint);
		}
	}
	
	@Override
	public boolean onTap(GeoPoint point, MapView mapView) {
		mPoint = point;
		return super.onTap(point, mapView);
	}
}

ズームしたら自動的に半径のサイズも変わってくれたのを確認。
すごく便利じゃないか!!


ABC2010 Spring行ってきました~!

もう火曜日だけど、報告っつーことで。

Android Bazaar and Conference 2010 Springに参加してきましたー!

うちの会社の人と2人で愛媛から車で参加してきたので、移動が超大変だった…(>_<)
金曜日に仕事終わってから家にも帰らず19時に松山を出発。横浜に到着したのが午前4時半。なぜ横浜かといえば、駐車場代が安いのと、移動は電車のほうがよさそうだったから。8時まで仮眠してから、東京大学駒場キャンパスに移動。初めて東大に入ったー!!

東京大学 入り口

Androidユーザ会の集まりだけあって、愛媛ではほとんど見なかったDesireがそこかしこに。NexusOneも、Xperiaも大量に。すごい。それだけでなんだか嬉しい。

すごく寝不足だったが、せっかく愛媛から来たのだから全部聞いてやろうと思って、リポビタンD注入して、なんとか寝ないで聞いた。

最初は日本Androidの会の基調講演。丸山 不二夫さん。
以下の文は、私が講演を聴いて思ったことなども含まれているので、客観的な感じじゃない部分も多々あると思いますがご容赦。

Androidの機種が発売されてから現在まで、どのような勢いでAndroidが広まってきたか。そして、日本でも遂に各3キャリアからAndroidケータイが発売され、確実に認知度は増している。流れ的に今秋以降、Androidが爆発的に普及していくだろう。それからAndroid2.2の説明。でも次の講演がGoogleさんなのでザックリと。

  • HTML5とFlashのサポート(iOSとは異なる完全なるWebサポート)
  • ケータイの広告プラットフォーム化
  • インターネットトラフィックはモバイル端末からのものが増え続けている
  • 5年以内にPCからのトラフィックを抜くだろう

iPadの登場でタブレット市場が全く別のものになってしまった。まるでiPadが初めてのタブレットと勘違いさせるくらいに。HP(ヒューレットパッカード)もHP Slateを作成中。Windows 7版とAndroid版。Googleもタブレットを構想中。だが、当初はChromeOSを使う予定だったが、Androidになるんじゃないだろうか?とのこと。

そして、メディアと未来。
クラウドとクラウドデバイス(iPhoneやAndroid)の成熟により、ようやくデバイスが活きる土壌ができた。この点についてはGoogleのほうが優位に立っているがAppleもクラウドに力を入れていて、でっかいデータセンターを作ってる最中。iPadの登場により、電子書籍の売り上げがゲームの売り上げを超えた。そして、音楽市場もダウンロード販売がCD販売を抜いた。メディアはどんどんデータ化され、クラウドに持たれるようになっていっている。
コミュニケーションツールも爆発的に利用されるようになっている。代表がTwitterとFacebook。これらのコミュニケーションを支えているのはモバイルネットワーク。そしてそのプラットフォームの王者に成りえるのがAndroidである。

あー、なんか書いていてまとまらなくなってきてるような…。
他のは後日書きます。


Desireで絵文字見るには、ブラウザで見ればよかったという罠

Desireに翻弄されながらの生活も、連絡先問題が一服したことで一段落。
絵文字はブラウザ経由でGmail見たら見れることに気付いた。
各キャリアの絵文字で gmailが書けるemogmailというアプリと、
ブラウザからのgmail閲覧に切り替えて急場をしのいでいる。

受信のみ、gmailアプリで。じゃないと気付かないから。

先週は伯方島旅行の写真をスライドショー化して、DVDに焼く作業をしていたのと、Desireの影響で全然開発できていなかった。やばい。このままでは俺が立てた目標に到達できない!急がないと。ということで、少しでもいいから開発進めようと思って、CakePHP復活!

Cake1.2と1.3の違いもよくわからぬまま、とりあえず1.2の本を読みながら、ソースをパクりながら進める。まぁ、今やってるところは管理画面だからね~…。テーブルが5つしかないシステムだから、ドカーンとやらずに地道にいこう。一人での開発だし。

スナックのボーイのアルバイトしてた頃に他のメンバーが聞いてたアジアンカンフージェネレーションの「君という花」をヘビーローテーションで聞いている。久々に聞くと、あの頃が懐かしくなる。絶対に戻りたくはないが。


モスの辣油バーガー食べてみた

image

今日は昼に銀行にいく予定があったので、あまり出掛けない方面にいってみたので、そのときに目についたので昼飯に、モスのザクザクラー油バーガーを食べてみました。

ツイッター用のアプリを作るために調査してたときに、よく写真付きで呟かれてたんですよね~!
気になってたのになかなか食べられずにいたわけですが、来週の月曜までというのをみたら、これを逃したらもうないなと。

赤い色合いでとても辛そうに見えるんですが、程よい辛さと、タマネギのザクザクと辣油のザクザクがマッチして、予想以上に美味しかったです!もうすぐ終わってしまうので、食べてない方は是非!