自分用メモも兼ねて作成してみる。
表題のような場面やActivity起動時などに特定のEditTextにフォーカスをあてて
ソフトキーボードを出したいと思った時、
上記のようなコードだけではEditTextにフォーカスはあたるものの、ソフトキーボードが表示されない。
なぜかと思ったら画面の描画が終わった後にフォーカスをあてないとダメらしい。
いろいろ調べてコードをこねくり回した結果、以下のようなコードに落ち着いた。
要は画面が描画されてから処理を行えば良いということ。
android.os.Handler.postDelayed()を使用してソフトキーボードの表示処理を遅延させれば良い。
java.util.Timerでの遅延でいいじゃないかと思われるかもしれないけど
こっちのほうが効率が良いっぽい。(理由はよくわかりません。ゴメンナサイ。)
とりあえず10ミリ秒の遅延にしているけどハードウェアの性能によっては
もっと少なくて済んだり足りなかったりするかもしれない。
ちょっと美しくない解法かも知れないが目的は達成できるのでまあいいかな…?
2012年6月21日木曜日
2012年6月18日月曜日
canvasをいじってみる(その1)
友人が多数使っていたり会社の同僚さんに勧められたりしたので、拙筆ながら時代の流れに乗って技術関連のことを徒然なるままに書き連ねてみたいと思う。
現在もまだ使用策定中のHTML5の一部であるcanvas要素。
だいぶ前に書いたデモ的なプログラムを紹介。
横幅を大きく作りすぎていて見づらいです。スイマセン。
Flashじゃありません。
特にライブラリとかもつかっていません。
すでにHTMLとJavaScriptとブラウザだけでこれだけのことができるようになっててビックリ。
以下コード解説。
-----
グローバル変数。
フレームレート、重力の強さ、ハコの大きさなどの定義。
ボール用クラス。
自分自身の位置(XY座標)、大きさ(半径)、速度、加速度のパラメータを持っていて、これらに従ってmoveメソッドで自分自身の位置を変化させる。
ハコの描画と画面クリア用function
onloadイベントで呼び出されるメイン処理。
重力のセットやボールの生成などの初期化処理が走ったあと、画面描画用のループが回る。
高校レベルの物理と数学の知識があれば簡単に作れると思います。
まだまだ性能がFlashに及ばないし仕様すら策定中の技術ですが、Audio APIとかWebStorageなどと組み合わせれば面白いものができそうな気がする。
そのアイデア出しが難しいんだけども…。
現在もまだ使用策定中のHTML5の一部であるcanvas要素。
だいぶ前に書いたデモ的なプログラムを紹介。
横幅を大きく作りすぎていて見づらいです。スイマセン。
Flashじゃありません。
特にライブラリとかもつかっていません。
すでにHTMLとJavaScriptとブラウザだけでこれだけのことができるようになっててビックリ。
以下コード解説。
-----
グローバル変数。
フレームレート、重力の強さ、ハコの大きさなどの定義。
ボール用クラス。
自分自身の位置(XY座標)、大きさ(半径)、速度、加速度のパラメータを持っていて、これらに従ってmoveメソッドで自分自身の位置を変化させる。
- 加速度は速度、速度はボールの位置にそれぞれ作用
- 床に接触した場合Y方向の速度が、垂直な壁に接触した場合はX方向の速度がそれぞれ反転(スピード * -1)する。
- drawメソッドを呼ぶと描画。
ハコの描画と画面クリア用function
onloadイベントで呼び出されるメイン処理。
重力のセットやボールの生成などの初期化処理が走ったあと、画面描画用のループが回る。
高校レベルの物理と数学の知識があれば簡単に作れると思います。
まだまだ性能がFlashに及ばないし仕様すら策定中の技術ですが、Audio APIとかWebStorageなどと組み合わせれば面白いものができそうな気がする。
そのアイデア出しが難しいんだけども…。
登録:
投稿 (Atom)