忍者ブログ
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。



2017/10/19 14:15 |
Android2.2 OnTouchListenerで手を離したのを感知する
XMLにandroid:onClickと書くと簡単にView.OnClickListenerを実装できるという話をしました。

さて、イベントリスナーにはOnClickListener以外にも長押しを感知するOnLongClickListener、キーボードなどの押下を感知するOnKeyListenerなどがあります。
そこらへんはXMLでは指定できないみたいなので、Javaからリスナーをセットする必要があります。
とりあえずOnTouchListenerを実装してみます。
ImageView view = (ImageView) findViewById(R.id.imageView);
view.setOnTouchListener(new OnTouchListener(){
	@Override
	public boolean onTouch(View view, MotionEvent motionevent) {
		switch(motionevent.getAction()){
			//押した
			case MotionEvent.ACTION_DOWN:
				Log.v("OnTouchListener", "ACTION_DOWN");
				break;
			//離した
			case MotionEvent.ACTION_UP:
				Log.v("OnTouchListener", "ACTION_UP");
				break;
			//キャンセルした
			case MotionEvent.ACTION_CANCEL:
				Log.v("OnTouchListener", "ACTION_CANCEL");
				break;
		}
		return false;
	}
});
一見できているように見えますが、何故かACTION_DOWNは感知するのにACTION_UPACTION_CANCELも反応しません。
何故だ。

http://developer.android.com/reference/android/view/View.OnTouchListener.html
> Returns True if the listener has consumed the event, false otherwise.

よくわからんが、このリスナーで処理を続けるならtrueにしろってことか?
return trueにしたら無事動作するようになりました。
たったこれだけのことに数時間引っかかったことは秘密だ。


で、解決したあとになってそのまんまの記事が見つかるのもよくあること。
PR


2011/10/28 22:13 | Comments(0) | TrackBack(0) | Android

トラックバック

トラックバックURL:

コメント

コメントを投稿する






Vodafone絵文字 i-mode絵文字 Ezweb絵文字 (絵文字)



<<Minecraft 1.8.1 MODを導入してみる | HOME | Android2.2 画面中央に置いたViewの下にViewを置けない?>>
忍者ブログ[PR]