問題タブ [ontouch]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - Android PointerID を理解する。予期しない値を返す
最近アプリのクラッシュ レポートを受け取り、スタック トレースを確認したところ、マルチタッチ コントロールに問題があることがわかりました。
何が起こるかは次のようなものです:
4本の指だけの指押しを記録しようとしています。もういや。4 を超えるものはすべて効果的に「無視」したいと考えています。
したがって、私は次のようなことをしています:
したがって、4 本以上の指が押されている場合、onTouch 内で何も実行していません。
これは正常に動作しているようです。通常、指 5、6 などには「作用」しません。すべて問題ありません。(以下の理由で「一般的に」と言います).....
問題
ただし、6 本の指を下に置いてから持ち上げると、最後に下に置いた指のポインター ID は 5 になります。 action_upまたはaction_pointer_upで何もしていないため、これは実際には問題ではありません。
ただし、 action_pointer_downでは、90% の確率で、置かれた指が 0 から 3 の間の ID しか持たないという予想される動作が得られます。
ただし、画面に 5 本以上の指を置き、画面をすばやく何度もタップすると、最終的には 4 つ以上のaction_pointer_downイベントに ID が割り当てられます (4、5、6、7 を見たことがあります)。したがって、これらの値を xList および yList 配列に配置しようとすると、範囲外の例外でクラッシュします。
action_pointer_down では、指の x と y を作成したいくつかの配列に保存しているため、これは問題です。(後でいくつかのアクションを実行するためにこの情報が必要です) これらの配列のサイズはそれぞれ 4 です (インデックス 0 から 3 になります)。このような:
どうしてこれなの?これはマルチタッチ API のバグですか、それとも私が理解していないものですか。通常の使用では、エラーは通常発生しませんが、自分で簡単にトリガーでき、ユーザーが見つけたので、助けていただければ幸いです。フィンガー ダウン イベントは、0 ~ 3 の ID しか受信しないと予想されます。私が何かを誤解していない限り。
android - onTouch メソッドで ListView の CustomView のサイズを変更する (setLayoutParams が機能しない)
カスタム BaseAdapter で埋められた ListView があります。カスタム BaseAdapter の getView メソッドは、RelativeLayout を拡張するカスタム ビューのみを返します。
ここで、ListView 項目に触れるたびに、この項目の高さが TouchEvent の Y 位置 (または他の何かに設定されますが、それは問題ではありません) に設定されるようにしたいと考えています。
そこで、カスタム ビューで OnTouchListener を設定しています。
だからすべてが大丈夫です。私のログでは、たくさんの数字が減っています。しかし、setLayoutParams-method (これは必要です) を呼び出したいとすぐに、onTouch-method は、画面を離して再タッチしたときに 1 回だけ呼び出されるようです。ログとカスタム ビューのサイズも 1 回だけ変更されます。
その理由は何ですか?
android - 最後に残っている指の座標を取得する - Android マルチタッチ
私が直面している問題は、ACTION_POINTER_UP が起動されたときに、最後に残っている指の座標を取得する必要があることです。
この例を見てください (2 つのポインタを使用):
- 親指を画面 (ID0) に置きます
- 人差し指を画面に置く (ID1)
- 画面から親指を離します (ID0)
- 残りのポインターは人差し指 (ID1)
- 人差し指のグラブ座標(ID1)
さて、私の ACTION_POINTER_UP ケースには、次のものがあります。
明らかに、これはあまり役に立たないので (私が理解できる限り)、これは画面を離れたポインターの x と y を記録しますが、これは私が必要としているものではありません。
上記の例では 2 つのポインターのみを使用していますが、同じ質問を 3 つ、4 つ、または 5 つのポインターに適用できます。
- 親指を画面上に配置 (ID0)
- 画面上に人差し指を置く (ID1)
- 画面に中指を置く (ID2)
- 画面に薬指を置く (ID3)
- 画面から親指を離します (ID0)
- 画面に触れた残りのポインターの最新の x と y を取得します
Android の公式ドキュメントやブログにはリンクしないでください。何度も読みましたが、どうすればこれを達成できるのか、まだよくわかりません。また、ポインタ ID についての私の理解が間違っている場合は、訂正してください。
android - Android - カスタム ビューの onTouch メソッドから mainActivity に情報を送信します。
一連のアクションを実行する onTouch メソッドを持つカスタム ビュー (DrawFigures) があります。カスタム ビューを動的に追加するためのいくつかのボタン、TextView および RelativeView を含むレイアウトがあります。次に、MainActivity.class で、このカスタム ビューで onTouch メソッドが呼び出されたときに、DrawFigures のいくつかの属性の値を受け取り、それらを TextView コンポーネントに表示する必要があります。
カスタム ビューのコードは次のとおりです。
DrawFigures の onTouch メソッドが原因で、値が変化している間、MainActivity の TextView に表示する value1 を受け取ることができませんでした。この問題はどのように解決できますか? MianActivity に OnTouch メソッドを実装しますか? どうやってするの?MainActivity.class は次のようになります。
android - Android: キークリック音の作り方
キーアップ イベントとキーダウン イベントをキャッチするために ontouch リスナーを使用しています。リピート機能に。ボタンを押したときのクリック音も欲しいです。onClick メソッドを追加して、クリック可能な true を設定しようとしましたが、ontouchlistener が onclicklistener をオーバーライドしているようです。
キークリック音を鳴らし、クリック時のユーザー設定に従うにはどうすればよいですか?
更新: ありがとうございました。私の答えは、Android ソースを調べて見つけました。PhoneWindow.java で、必要なことを実行している場所を見つけました。本質的には、オーディオ マネージャーを開いて、AudioManager.FX_KEY_CLICK を再生します。AudioManager.playSoundEffect は、適切な場合に効果音のみを再生します。
android - Android の onTouch および onTouchEvent メソッド
「onTouch」メソッドで以下のように書きました。
しかし、「getPointerCount()」と「getAction()」は常に同じ値を吐き出します。
このコードはマルチタッチを認識できません。
また、MotionEvent.ACTION_UP の発生時に onTouch メソッドは呼び出されません。
だから、私は onTouchEvent メソッドで同じことを試しましたが、これはうまくいきます。
「onTouch」メソッドの問題は何ですか?