SDK

Androidとリフレクションについて

Android上でのプログラミングではリフレクションは忌避すべきと言われている。PCに比べるとリソースが制限されているスマートフォンではこれは正しい。しかしNexus oneやXperia等、周波数1Ghzのプロセッサと500MB以上のRAMを搭載した実機を使ってきた感覚だ…

ビュー階層と要素

Androidのビューを構成するためのレイアウトをXMLで作成する場合、ルート要素にはなんらかのコンテナクラスの要素(ViewGroupの派生クラスを表す要素、例えばLinearLayout)を記述しなくてはならないというルールがある。例えば、以下のように構成されたビュー…

Activityのビュー階層とコンテンツルート(View)を取得する

Activityがインフレートするビュー階層は、特にオプションが指定されなければ以下のようになる※PhoneWindow$Decorviewはポリシ毎に用意されるビューのルートであり View decor = this.getWindow().getDecorView(); と取得する。 このDecorView下に追加される…

NumberPickerを再作成する

AndroidのDatePickerやTimePickerは日付や時間等、数値の入力をスムースに行うための重要なビュー・コンポーネントなのだが 入力範囲を設定する機能 入力した値をフォーマットする機能 入力する値を制限するフィルタ機能 10, 20, 30..など決められた単位で値…

9-patchとビューの縮小 (原因と対策)

見て解る通りだが、高さを40dpに設定すると無効時の描画が縞模様になってしまう。 50dpから少しずつサイズを下げて見たが、46dpからこのように描画がおかしく(濃い灰色の領域が閉じない)なることが分った。 この原因はやはり9-Patch処理された画像に由来する…

GlassPaneを作る(その4)

ロック中でもボタンのイベントを処理するためにdispatch〜メソッドを書き換えているが、 if ( this.lock ) { return this.container.dispatchKeyEvent(event); } これだと期待通りボタンは動作するのだが、内部的には同一の親(GlassPane)に属している子孫の…

GlassPaneを作る(その3)

OracleがAndroidを提訴したことでかなり萎えたが、めげずにいってみよう。前回はGlassPaneの表示時(lock時)に入力をブロックするところまでを実装した。 GlassPaneの要件 ・ 配下(子供)のGUIを覆う透明又は半透明な領域(パネル)として描画 ・・(済) ・ 表示…

GlassPaneを作る(その2)

GlassPaneの要件 配下(子供)のGUIを覆う透明又は半透明な領域(パネル)として描画 ・・(済) 表示されている間は一部の入力以外は受け付けない(ブロックする) 自身の上に予め登録されたGUIを描画でき、そのGUIだけは入力を受け付ける 昨日は半透明な領域の描画…

GlassPaneを作る (その1)

以前の日記で言及したことがあるが、JFC/SwingはGlassPane(ガラス区画)と呼ばれるレイヤがJFrameに仕込まれており、これを利用してGUI上にブロッカと呼ばれる入力操作を弾く機能を追加できる。GlassPaneとブロッカ同じ機能がAndroidアプリケーションでも欲し…

Ruboto (JRuby on Android)

Ruboto–Ruby on Android Ruboto(読みは"るぼっとぉ"でよいのかな)はAndroidのJRubyバインディング。Ruboto (JRuby on Android) Google Groups※ Ruboto's ruboto-core at master - GitHub最終的にはフルスペックなAndroidアプリケーションをRubyで書くことを…

AlertDialog#findViewByIdはshow以降じゃないと使えない

Androidはビューをインフレートすることでカスタムなダイアログを生成することができる。 Activity中にて public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); LayoutInflater factory = LayoutInflater.from(this); Vi…

ListViewのスクロール行を透過にする

GoogleIO 2010のスライドを見ていて、The world of ListView Android - Romain Guy, Adam Powellこの中で、 My list turns black?! ・Gotcha - Very useful optimization - When scrolling views are cached in bitmaps - Opaque bitmaps to avoid blending…

久々にAndroid本

Androidの技術書籍に関してはJavaの経験があればWebの情報である程度足りてしまうこともあり、オライリーのしか購入していなかったのだが※ 初めてのAndroid /Ed Burnette (著), 日本Androidの会 (監訳) (翻訳), 長尾 高弘 (翻訳) 7月にApressの"Beginning An…

AndroidHttpClient

今まで{@Hide}※されていたAndroidHttpClientクラス(android.net.http.AndroidHttpClient)だが、Froyoからはその禁が解かれた。 このクラス、Android向けに最適化されているとのことなので使ってみようと思ったのだが、いざDefaultHttpClientから切替えようと…

AsyncTask

AsyncTaskクラス(android.os.AsyncTask)は任意のタスク(処理)をUIスレッドとバックグラウンドスレッドに分割して実行するためのクラスである。AsyncTask - Android Developersシングルスレッドモデルで動作するAndroidのGUIアプリケーションを書く場合には殆…

Market Licensing package revision 1

Licensing Service Technology Highlights ttp://android-developers.blogspot.com/2010/07/licensing-service-technology-highlights.htmlAndroid Marketの新たなライセンスサーバのサービス公開(無料で使うことができる)に合わせて、様々なライセンス管理…

モーダルダイアログが欲しい (その2)

いろいろと考えたが、モーダルダイアログと近似した振る舞いのダイアログとするのはよいが、Androidの場合UIスレッドを止めるのは御法度なので、本来の意味のモーダルは実現できない。なのでAsyncTask等を使用して他のスレッドを使用している場合を想定し、…

モーダルダイアログが欲しい

Androidに用意されているダイアログ(Dialog)では、Windowsで言うところのメッセージボックスのようにモーダルなダイアログは無い。画面の大きさが限られているためにモーダルのように見えるが、上部レイヤに表示されているウインドウに過ぎない。 new AlertD…

金科玉条

Android でリアルタイムゲームの開発方法 : Google Developer Day 2009 Japan http://code.google.com/intl/ja/events/developerday/2009/sessions.html Android でリアルタイムゲームの開発方法/クリス プルエット一年近く前の資料だが、スレッドの責任分担…

ファイルとストリームで読み込む要素が変わる..訳がない

Tagsoup+SAXHandlerでHTMLをパースしているのだが、入力がFileの場合とSocket(サーバ)の場合で読み込むタグ要素に違いが出る現象が発生していた。以下のような構造のHTMLがあったとしよう。(閉じるタグは省略) <body> <table> <tbody> <tr> <td> <table> <tr> <td> <table>これがファィルに格納されている場合、</table></td></tr></table></td></tr></tbody></table></body>…

思い上がり

ADTのレイアウトエディタは完全とは言えないまでもビューの見た目やビュー間の親子関係を確認しながらレイアウトを作成できるため有り難いのだが、いかんせん、出力するXMLのインデントと改行が滅茶苦茶なので、私のようにある程度アウトラインをレイアウト…

不可解な結末

AIDLのパラメタとして定義したBundle型にParcelableとして定義したクラスのインタンスをセットして、Service側のメソッドを呼ぶとBadParcelableExceptionがスローされる件だったが、 Bundle bundle = new Bundle(); BaseInfo baseInfo = new BaseInfo(); bun…

エミュレータが壊れる?

暫くエミュレータを使ってデバッグしていたら、トレースは出来ているし、見た目上はきちんと動いているように見えるが一切のブレートポイントに対して止まらないという現象が発生した。今までも暫くデバッグしていると いきなりUnknownHostExceptionが発生す…

AIDLによるサービスとの通信でBundleにParcelableをセットするとBadParcelableException

以前にも書いたが、以下の様なAIDLを定義してActivityとServiceで通信を行っている。 IWebScrapingService.aidl interface IWebScrapingService { boolean scrape(in String url, inout Bundle bundle); } ActivityはServiceをバインドした後、スタブのメソ…

AIDLによる通信でBundleにParcelableをセットするとBadParcelableException(その2)

デバッグできないスレッドで発生しているようだが(BinderThread?)スタックトレースを見るに、以下で例外が発生しているのは間違いないようだ。 public final T readParcelable(ClassLoader loader) { String name = readString(); if (name == null) { retur…

SharedPreferencesに出力したデータの保存場所と形式

SharedPreferencesを使ったデータの保存と読込は、古のWindowsのiniファイル同様に簡便なものだ。 実装はJavaのPreference APIにより行われており、例えばWindowsの実装の場合はレジストリに保存されるが、Androidの場合どのようになっているのだろう。(やっ…

レイアウトエディタとXML

ADTのレイアウトエディタは完全とは言えないまでもビューの見た目やビュー間の親子関係を確認しながらレイアウトを作成できるため有り難いのだが、いかんせん、出力するXMLのインデントと改行が滅茶苦茶なので、私のようにある程度アウトラインをレイアウト…

トラックバック返し

コメントはできないみたいなので、エントリにて。[Android] logcat で日本語を表示する(Windows)- adakoda フォローありがとうございます。ショートカット、とても便利ですね。 Android開発ではいつも参考にさせて頂いております。

Activityのタイトルバーでマーキー表示する

こんな感じにタイトルバーに表示する文字列をFading領域から横スクロールしたい。いわゆるマーキー表示って奴だ。 Activity中に書くサンプル Window window = this.getWindow(); Class phoneWindowClass = Class.forName("com.android.internal.policy.impl.…

Android 2.2 SDK rev2 bug? (with ADT)

先日紹介したAndroid 2.2 SDK refreshをインストールした直後からstring.xmlをEclipse上から開くと例外が発生するようになってしまった。 明らかにおかしいが、Eclipse 3.6(Helios)上での現象であり、他のEclipseでは問題が発生しないのかもしれない。 もしE…