ブログランキング・にほんブログ村へ


iPhone/iPad用潜水艦ゲームアプリ ソナーエコー iTunesにて公開中

2012年07月13日

Android TabActivityでonKeyDownが拾えない 他 小ネタ

表題のとおり。

TabActivityでonKeyDownが拾えないようだ。

具体的にはハードウェアのBackキーをフックして自前メニューが出てる時はまずはそれを消す動作にしたかった。

散々悩んだが、普通にActivityにしたら取れた。
前から使ってるのにどうして取れないのかおかしいなーとは思ってたんだけど。

理由はなんかあるのかもしれないが、TabActivityが激しく使いにくいのでついでに使うのをやめた。

あと、ひょっとすると、TextViewのOnClickもTabActivityだと拾えないかもしれない。
TextViewにsetClickable( true )して、setOnClickListenerしてもなぜかTabActivityだとOnClickに飛んでこなかったような気がする。



あと、全然関係ないけど。


EclipseのデバッガでなぜかDexFileのとこで止まるようになったとき。

止まった時のスタックトレースをみると「クラスロード」とか書いてあったら、クラスの宣言のところにブレークポイント?が仕掛けられてる。大抵は事故でついてしまうんで、???って感じになる。

例えば
public class MyActivity extends Activity implements OnClickListener{

こういう行。緑色の普通のブレークポイントよりかなり大きいまるっちいマークがついてればビンゴ。
ダブルクリックで外せばOK。
posted by みこあいさ at 17:07| Android開発

2012年07月10日

Eclipse ADTのアップデートでえらいことに

ADTのアップデートでえらいことになりかかった。

きっかけとしてはこれ。

Android Button の色や画像を変える

ボタンの背景をビットマップにしたかったのでテストしていたが、なぜかうまくいかない。

org.xmlpull.v1.XmlPullParserException: Binary XML file line #16: <item> tag requires a 'drawable' attribute or child tag defining a drawable
こういうエラーが出る。
いや、おかしいだろう、このエラー。
ちゃんとそういう風に書いてるし。だいたい以前動いたっていう実績のあるソースで出るってのが。

色々いじっても直んない。仕方なくまたググる旅に出たら、外人とか同じ内容で困ってる人がたくさん。

GoogleのAndroidの該当ページをみるとADT16のバグらしく、最近、ほんとに最近やっと直したらしい。
確かに自分のADTは16だった。

それじゃしばらくやってないしADTのアップデートをしよう。ということで、Eclipseのヘルプ>更新の確認でみると
ADTは20になってたのでアップデートした。

そしたらEclipseの再起動後、SDK Toolのアップデートをしなくちゃいかん!ってエラーが出て、SDKマネージャーを
開くボタンがあったのでそれを押して、SDK Toolのアップデートをした。
いや、しようとした。
しかし即座にエラー。
ダウンロードしたはずの
platform-tools_r12-windows.zip
が見つからないとかなんとか。
Platform SDK Toolのほうだけにしたりとかしてもダメ。
それでよくエラーメッセージをみてみると、

platform-tools_r12-windows.zip
のファイルパス。
C:\Program Files (x86)\Android\android-sdk\temp
とかになってる。

いや、普通のjavaアプリがそんなとこ書けるわけないから(Windows 7)。

入れたところが悪かったのか。デフォルトがここだったか覚えてないが。

C:\Program Files (x86)\Android\android-sdk

SDK Manager.exe
を右クリック→管理者権限で実行。

それで開いたSDK Managerで同じことをする。

アップデート完了。

やれやれ。

Eclipseを起動。

なんかプロジェクトがエラーだらけ。

layoutのxmlがおかしい。

xmlを開こうとする。

なんか嫌なエラーが出てファイルタブ自体切り替わらない。
com.android.ide.eclipse.adt.internal.editors.layout.configuration.ConfigurationComposite.(Lcom/android/ide/eclipse/adt/internal/editors/layout/configuration/ConfigurationComposite$IConfigListener;

それでまた解決方法を探したらまとめてくれてる人がいた。

Android 「main.xmlが開けない」「Graphical Layoutが表示されない」取りまとめ

一言でいうと、

コンソールでeclipse.exeのあるディレクトリにいき、

start eclipse.exe -clean %*

とする。

ちなみにまとめぺーじにあった
start .\eclipse.exe -clean %*
では
ファイル.\eclipse.exeが見つかりません
となった。
eclipse.exe -clean.cmd
は効果なし。
自分のがプレアデスの丸ごとダウンロード日本語Eclipseだからかもしれない。
clean.cmdというスクリプトがいるらしいけど、ないみたいだったし。

これでEclipseを再起動でlayout xmlが表示されるようになった。

めでたしめでたし…


じゃない。

やっと一番初め目的に戻れる。

「ボタンの背景をビットマップに」

どれどれ。

org.xmlpull.v1.XmlPullParserException: Binary XML file line #16: <item> tag requires a 'drawable' attribute or child tag defining a drawable


ADT20でも直ってない。

よくよく初めのGoogleのAndroidの該当っぽいページを見直すと、ADT17のバグがなおったとあるのが、2012年4月24日。
そのあと2012年7月2日にADT20にバグ残ってんじゃん!って書き込みが…。


いい加減せえやGoogle。

とりあえずこのページ

を監視するしかなさそうだ。


しかしiPhoneといい、Androidといい、何兆円という市場の核となってるはずの開発環境が
こんなにずさんってどうなの。
ソフトウェアの開発環境の質って、8K Basicとかの時代あたりから対して変わってない。
一見便利になったように見えるけど、人間の凡ミスは結局いつまで経っても回避できない。
お金のあるところが、いくら儲かってもそういうことにお金を回さないのも変わらない。
MicrosoftもAppleも。
トヨタとか当たり前のように開発費に膨大なお金を掛けて製品のクオリティを劇的に上げてるのに
どうしてソフトウェアの連中はそれが出来ないで儲けたお金をほとんどつまんないことに使っちゃうのか。
もうこれは自分が現役のうちには直らないな。
ほんとに嫌になる。

疲れた…。
posted by みこあいさ at 18:05| Android開発

2012年07月06日

Android 画像を90度回転

これも前の記事との関連なんだけど。

Bitmapを90度回転させたい。Canvas作ってマトリクス用意してdrawBitmapして…そんなこと考えてたらもうそのまんまのがあった。
srcBitmapを90度回転したBitmapを生成

int deg = 90;

Matrix mat = new Matrix();
mat.postRotate( deg );

int sw = srcBitmap.getWidth();
int sh = srcBitmap.getHeight();

Bitmap rotatedBitmap = Bitmap.createBitmap( srcBitmap, 0, 0, sw, sh, mat, true);

ちなみに元画像の一部を切り抜くのもこれでできる。
srcBitmapを Rect rで切りぬいてtrimmedBitmapとして生成。

Matrix mat = new Matrix();

int sw = srcBitmap.getWidth();
int sh = srcBitmap.getHeight();

Bitmap trimmedBitmap = Bitmap.createBitmap( srcBitmap, r.left, r.top, r.right-r.left, r.bottom-r.top, mat, true );

いやー便利。
posted by みこあいさ at 18:58| Android開発