onTouch()の罠
2016/01/07 02:37:26
お白湯うめぇ
いえね、1行目は適当なことを言っておかないとtrimされるんでね。実際うまいんですけれども。
先日述べた、FrameLayoutに格納したレイアウトからタッチイベントを受け取る形式を採用すると使うことになるonTouch()のオーバーライド。
自分でイベントを処理したときはtrueを返しなさいよ! ってのが約束事だと思う。なので自分で処理したとこはreturn true; なんもせなんだ時はfalse返すのが正しい道であると思う。
ACTION_UPが取得できないんですよ(結論)。
まあ気付いたのは全部return false;してた時なんですが、自己処理したcaseでtrue返しても依然受け取れない……と思ったら受け取れた。
いえ姉さん違うんですよ。
まずonTouch()内でcase ACTION_DOWN:なり書く。さらに進行状況を示すステータスによるswitch分岐を書く。
分岐(case)該当しなかった場合はfalse返してたんだが、どうやらそもそものcase ACTION_XXX: を書いた時点で「自己処理した」 = return true; と考えなきゃいかんのなこれ。どのcase文にもひっかからずonTouch末尾へ至った時に限りfalse返すんであって。気付いてみればごくごく当たり前のこと……なのか? 多分そうなのだろう。
あるイベントの受け取り処理をした時点でreturn true; を確定。しないとその後のイベント受け取りがおかしなことになる可能性大。そういうことで理解しとこう。
参考文献:日本Androidの会 › setOnTouchListenerでACTION_UPが反応しない
いえね、1行目は適当なことを言っておかないとtrimされるんでね。実際うまいんですけれども。
先日述べた、FrameLayoutに格納したレイアウトからタッチイベントを受け取る形式を採用すると使うことになるonTouch()のオーバーライド。
自分でイベントを処理したときはtrueを返しなさいよ! ってのが約束事だと思う。なので自分で処理したとこはreturn true; なんもせなんだ時はfalse返すのが正しい道であると思う。
ACTION_UPが取得できないんですよ(結論)。
まあ気付いたのは全部return false;してた時なんですが、自己処理したcaseでtrue返しても依然受け取れない……と思ったら受け取れた。
いえ姉さん違うんですよ。
まずonTouch()内でcase ACTION_DOWN:なり書く。さらに進行状況を示すステータスによるswitch分岐を書く。
分岐(case)該当しなかった場合はfalse返してたんだが、どうやらそもそものcase ACTION_XXX: を書いた時点で「自己処理した」 = return true; と考えなきゃいかんのなこれ。どのcase文にもひっかからずonTouch末尾へ至った時に限りfalse返すんであって。気付いてみればごくごく当たり前のこと……なのか? 多分そうなのだろう。
あるイベントの受け取り処理をした時点でreturn true; を確定。しないとその後のイベント受け取りがおかしなことになる可能性大。そういうことで理解しとこう。
参考文献:日本Androidの会 › setOnTouchListenerでACTION_UPが反応しない
PR
この記事へのトラックバック
この記事のトラックバックURL