現在作成中のアプリで使っているものTips。基本自分用です。
View.OnClickListener
View.OnLongClickListener
View.OnKeyListener
View.OnTouchListener
おそらく最も頻繁に利用するインターフェース。(あくまで自分が。)
Viewクラスのリスナーは参考資料がすぐに見つかるのでAPI詳細は省略。
OnLongClickやOnKeyの戻り値について
boolean型の戻り値があるメソッドは一般的に「消費した場合true」に設定することになっている。
「消費された」時は他のメソッドが呼ばれないような設計になっているっぽい。
長押しの判定について
LongClickとかLongKeyPressの時間は、多分ViewConfigurationのgetLongPressTimeoutの値(ミリ秒)が使用されている模様。(デフォルト500)
他には、getKeyRepeatTimeout, getTapTimeoutあたりは使う機会があるかも…?
// staticメソッドなのでシステム一意かな。
int timeOut = ViewConfiguration.getLongPressTimeout();
// コンテキスト別にも設定されている項目があるみたいだけど、当分使わないだろう。
Context cxt;
ViewConfiguration conf = ViewConfiguration.get(cxt);
int doubleTapSlop = conf.getScaledDoubleTapSlop();
ViewGroup.OnHierarchyChangeListener
要素が変更された時にコールされるインターフェース。
仕様
void onChildViewAdded(View view1, View view2)
view1 ... イベント発生元View
view2 ... 追加されたView
void onChildViewRemoved(View view1, View view2)
view1 ... イベント発生元View
view2 ... 削除されたView
ViewGroup grp;
grp.setOnHierarchyChangeListener(lintener);
AdapterView.OnItemClickListener
AdapterView.OnItemLongClickListener
AdapterView.OnItemSelectedListener
要素がクリックまたは選択/選択解除された時にコールされるインターフェース。
仕様
void onItemClick(AdapterView> paramAdapterView, View paramView, int paramInt, long paramLong);
paramAdapterView... イベント発生元View(親のView)
paramView... イベント発生元View(子要素のView)
paramInt... 列数(?)*未調査
paramLong... 行数(?)*未調査
boolean onItemLongClick(AdapterView> paramAdapterView, View paramView, int paramInt, long paramLong);
paramAdapterView... イベント発生元View(親のView)
paramView... イベント発生元View(子要素のView)
paramInt... 列数(?)*未調査
paramLong... 行数(?)*未調査
戻り値... onClickを連動させる場合true(falseの方が一般的?らしい)
void onItemSelected(AdapterView> paramAdapterView, View paramView, int paramInt, long paramLong);
paramAdapterView... イベント発生元View(親のView)
paramView... イベント発生元View(子要素のView)
paramInt... 列数(?)*未調査
paramLong... 行数(?)*未調査
void onNothingSelected(AdapterView> paramAdapterView);
paramAdapterView... イベント発生元View(親のView)
AdapterView<? extends Adapter> adpView;
adpView.setOnItemClickListener(lintener);
adpView.setOnItemLongClickListener(lintener);
adpView.setOnItemClickListener(lintener);
ViewStub.OnInflateListener
スタブがインフレート(≒可視化)された時にコールされるインターフェース。
仕様
void onInflate(ViewStub paramViewStub, View paramView);
paramViewStub... インフレート前のView(スタブ)
paramView... インフレート後のView
ViewStub vStb;
adpView.setOnItemClickListener(lintener);
インフレートについて
インフレート(inflate)とは、直訳すると「膨らませる」ことらしい。「インフレ」の意もあるらしい。
androidでは、以下のような使い方をする。
ViewStubウィジェット(faviconViewStub | Android Developers)を使用すると、必要になった時にレイアウトファイルをインクルードする事ができる。
詳しくは、「 faviconc. レイアウトトリック: ViewStub の使用 - ソフトウェア技術ドキュメントを勝手に翻訳 」を参照。
たまにしか使われる事のないウィジェットに対して、表示が必要になるまでレイアウトの使用をおさえ、レイアウトを効率的に配置する事ができる。
===
以降は基本リスナーではないが、使う機会があったので追記。
SeekBar.OnSeekBarChangeListener
シークバーがドラッグ(単純にクリック・タップ等でも発生するはず)された時にコールされるインターフェース。
仕様
void onProgressChanged (SeekBar seekBar, int progress, boolean fromUser);
seekBar... ドラッグ中のSeekBar
progress... 変更された進捗率。(デフォルトだと百分率になるが、ProgressBar.setMax(int)により変更可能。
fromUser... ユーザ契機の変更であればtrueが設定されるはず。例えばアプリの中でsetProgressとかするとfalseになるのだろうか。(未調査)
void onStartTrackingTouch (SeekBar seekBar);
seekBar... ドラッグ開始したSeekBar
void onStartTrackingTouch (SeekBar seekBar);
seekBar... ドラッグ停止したSeekBar
SeekBar seekBar;
seekBar.setOnSeekBarChangeListener(lintener);