setY()が少しズレる謎の解決
2016/01/07 12:38:41
だからお前はアホなのだぁァ!!(挨拶)
結構バカバカしいが昨日これで散々悩んだ。
そんでも自力でなんとか原因究明をと思ってたものだが本日調べてみたところ、
Sukohi's tech blog!! [Android開発] タップした位置にビューを移動する方法
上記サイト様が参考になった。
言及しておられるのはステータスバーの高さについてだが、setY()がズレるには他にも要因があり、うちの場合はpaddingでした。選ばれたのは綾鷹でした。
FragmentのonStart()内でImageViewの位置を初期化するのだが、そーするとその後最初の描画でY軸がカクンとズレる。なぜだ!
坊やだからさ、とバーボンをキュッといってる場合ではない。
レイアウト(RelativeLayout)にpaddingTop="30dp"が指定してあった。
はて、最上部へ表示するTextViewにpadding設定はしてもLayoutへやった覚えはないんだが……ともかくそこを削除するとカクンズレはのうなった。こんなにうれしいことはありません。いやあるだろ、もっとあるだろ、この世に生きる喜び、そして哀しみが。愛と怒りと哀しみが。グリーングリーン。フルーチェ食ったりとか喜びがあるだろ。
一回作ったもんを作り直してるだけなのにいろんな問題に直面するもんだねしかし。
なんでじゃあぁぁぁぁ!! ってゥン時間にわたり頭ひねりまくってた問題が一瞬でサクッと解決してしまうのもプログラミングの醍醐味ですね。鬱だ。
結構バカバカしいが昨日これで散々悩んだ。
そんでも自力でなんとか原因究明をと思ってたものだが本日調べてみたところ、
Sukohi's tech blog!! [Android開発] タップした位置にビューを移動する方法
上記サイト様が参考になった。
言及しておられるのはステータスバーの高さについてだが、setY()がズレるには他にも要因があり、うちの場合はpaddingでした。選ばれたのは綾鷹でした。
FragmentのonStart()内でImageViewの位置を初期化するのだが、そーするとその後最初の描画でY軸がカクンとズレる。なぜだ!
坊やだからさ、とバーボンをキュッといってる場合ではない。
レイアウト(RelativeLayout)にpaddingTop="30dp"が指定してあった。
はて、最上部へ表示するTextViewにpadding設定はしてもLayoutへやった覚えはないんだが……ともかくそこを削除するとカクンズレはのうなった。こんなにうれしいことはありません。いやあるだろ、もっとあるだろ、この世に生きる喜び、そして哀しみが。愛と怒りと哀しみが。グリーングリーン。フルーチェ食ったりとか喜びがあるだろ。
一回作ったもんを作り直してるだけなのにいろんな問題に直面するもんだねしかし。
なんでじゃあぁぁぁぁ!! ってゥン時間にわたり頭ひねりまくってた問題が一瞬でサクッと解決してしまうのもプログラミングの醍醐味ですね。鬱だ。
PR
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が反応しない
Aura
2016/01/06 01:41:27
お白湯うめぇ
Aura http://www.umopit.ru/AuraEng.htm
Auraは環境音楽を鳴らしてくれるフリーソフト。部屋に居ながらにして外の気分を味わえる的な。
実際今も使ってみてて、昼間の森と夜の森っちゅうシチュエーションがあり今は夜なんでそっちが選ばれてるんですが。焚き火のそばに居、虫の音やら鳥の鳴き声やらがちょいちょい聞こえてくるといった感じでなかなかに雰囲気がある。すぐ慣れちゃうだろうけど。
user optional music soundsってのがあるんだが、これはどーやったらAura本体に組み込めるのか、一通り見てみたがよくわからない。まあいっか! 結構重かったけどねファイルDL!
追記:
判明した。
サウンドフォルダってとこで参照元を設定できる……最初からサウンドフォルダって表示だったっけ? なんか違った気がするがサウンドなんたらってとこへカーソル近づけるとなんか出るので、'...' ってのをクリックしてフォルダ設定してやればよい。
Aura http://www.umopit.ru/AuraEng.htm
Auraは環境音楽を鳴らしてくれるフリーソフト。部屋に居ながらにして外の気分を味わえる的な。
実際今も使ってみてて、昼間の森と夜の森っちゅうシチュエーションがあり今は夜なんでそっちが選ばれてるんですが。焚き火のそばに居、虫の音やら鳥の鳴き声やらがちょいちょい聞こえてくるといった感じでなかなかに雰囲気がある。すぐ慣れちゃうだろうけど。
user optional music soundsってのがあるんだが、これはどーやったらAura本体に組み込めるのか、一通り見てみたがよくわからない。まあいっか! 結構重かったけどねファイルDL!
追記:
判明した。
サウンドフォルダってとこで参照元を設定できる……最初からサウンドフォルダって表示だったっけ? なんか違った気がするがサウンドなんたらってとこへカーソル近づけるとなんか出るので、'...' ってのをクリックしてフォルダ設定してやればよい。