My Photo

« Androidアプリ開発メモ062:国際化、ローカライズ | Main | 2012夏アニメ視聴予定 »

June 09, 2012

Androidアプリ開発メモ063:タッチモードとフォーカス

関連する以前の記事:Androidアプリ開発メモ015:タッチイベント

タッチモード

Androidの入力モードには「タッチモード」と「タッチモードではないモード(キー入力モード)」がある。
画面をタッチするとタッチモードになり、画面へのタッチ以外の操作(物理キーやトラックボールなど)でViewを選択するとタッチモードを抜ける。
タッチイベントはタッチモードで画面をタッチしたときに発生する。

フォーカス

キーイベントはフォーカスがあるビューに通知される。
Viewがフォーカスを取得できるかどうかの属性は以下の2つ。

focusable
フォーカス可能である。
focusableInTouchMode
タッチモードでフォーカス可能である。

TextView は focusable と focusableInTouchMode ともに false である。トラックボールでもタッチでもフォーカスを移せない。
EditText は focusable と focusableInTouchMode ともに true である。トラックボールでもフォーカスを移せるし、タッチしてもフォーカスを移せる。
Button は focusable は true であるが focusableInTouchMode は false である。トラックボールでフォーカスを移すことができ、その状態で物理キーの決定キーを押せば Button を押せる。画面上の Button をタッチした場合はタッチモードになるので focusableInTouchMode=false である Button にフォーカスは移らない。

focus属性はfocusable属性を含んでいるようで、
Button のように focusable=true、focusableInTouchMode=false はありうるが、
focusable=false、focusableInTouchMode=true はありえない、というか、そう設定してもfocusableの設定が効いてフォーカスを持つことはできない。View#setFocusable() の説明にも合致する。

focusable、focusableInTouchMode はXMLでもViewクラスのメソッドでも設定できる。
独自のViewを作ったときなどを除いて、設定が必要な場合はあまりないと思うが。

レイアウトファイルのでの設定の例。デフォルトと同じように設定しているから意味はないが。
<EditText
android:id="@+id/editText1"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:text="@string/hello"
  android:inputType="text"
  android:focusable="true"
  android:focusableInTouchMode="true" />

public void setFocusable(boolean focusable)
ビューがフォーカスを受け取れるかどうかを設定する。これをfalseに設定すると、このビューはタッチモードではフォーカス不可能であることが保証される。

public void setFocusableInTouchMode(boolean focusableInTouchMode)
タッチモードにおいてビューがフォーカスを受け取れるかどうかを設定する。これをtrueに設定すると、このビューがフォーカス可能であることを確認する。

public final boolean requestFocus()
特定のビューまたはその子孫のいずれかにフォーカスを与えることを試みるために、これを呼び出します。
戻り値  実際にフォーカスを得たかどうか

参考ページ:
l. タッチモード - ソフトウェア技術ドキュメントを勝手に翻訳
たかがフォーカス,されどフォーカス - 愚鈍人
Y.A.M の 雑記帳: Android Button の色や画像を変える <-フォーカスある/なしのボタンの画像を変えるとか
Android第87回 タッチイベントとは

« Androidアプリ開発メモ062:国際化、ローカライズ | Main | 2012夏アニメ視聴予定 »

Androidアプリ開発」カテゴリの記事

Comments

Post a comment

(Not displayed with comment.)

TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/26461/54920337

Listed below are links to weblogs that reference Androidアプリ開発メモ063:タッチモードとフォーカス:

« Androidアプリ開発メモ062:国際化、ローカライズ | Main | 2012夏アニメ視聴予定 »

May 2017
Sun Mon Tue Wed Thu Fri Sat
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      
無料ブログはココログ

日本blog村

  • にほんブログ村 IT技術ブログへ
  • にほんブログ村 アニメブログへ
  • にほんブログ村 サッカーブログ アルビレックス新潟へ

好きな音楽家

メモ

XI-Prof