問題タブ [motionevent]

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.

0 投票する
2 に答える
4585 参照

android - onTouch 中に MotionEvent.ACTION_CANCEL がトリガーされない

トリガーされない場所でこの問題が発生ACTION_CANCELしています。他のプロジェクトに実装しましたが、正常に動作しています。の後に呼び出されるACTION_UPのは だけのようです。指がビュー内または画面外になくなったらトリガーしたかったのです。MotionEventACTION_DOWNACTION_CANCEL

サンプル シナリオ: LinearLayout であるビューをクリックすると、ACTION_DOWNその背景がイメージの「クリック/淡色表示」バージョンに変更され、ACTION_UPトリガーされると、指が LinearLayout 内にある場合にのみ、背景がデフォルト イメージに戻ります。 . 問題は、それを押して画面上に指を置いたまま、LinearLayout の外に指をドラッグすると、本来ACTION_UPあるべきではない場所でトリガーされることです。

これが私のコードです:

ここで、dimView は LinearLayout です。

0 投票する
1 に答える
1864 参照

android - その特定の相対レイアウトのみで edittext または imageview を移動する方法は?

edittext と imageview を移動するためにこのコードを実行しました。うまく動いていますが、相対レイアウトの外にも移動します。特定のレイアウトでのみ移動するための制限を設ける必要があります。誰か提案がありますか?

0 投票する
1 に答える
1504 参照

android - 指に沿って線を引く - motionevent.getX() と getY() が正しくない UPDATE

更新:質問全体をもう一度読んでください:-)

バックグラウンド:

カスタム ビューを作成し、これらのビューを に追加して、点のグリッドを作成しましたTableLayout。目的は、ドットが押されると、押されたドットの中心から指が現在あるポイントまで線が開始されるように、これらのドットの1つから別のドットに線を引くことができるようにすることです触れる。指を別の点の上にドラッグすると、線はその点の中心で終了します。その結果、押されたドットの中心から指でドラッグされたドットの中心まで線が引かれます。

を超える線を作成するためTableLayoutに、メソッドを使用してポイント間の線を作成した新しいカスタム ビューを作成しましたcanvas.drawLine()。次にFrameLayout、TableLayout と LineView を配置する を作成しました。これは、ライン ビューを TableLayout の上に描画できることを意味していました。

現在の状況:

独自の「タッチ フィードバック」を持つことができるように、DotView クラスにタッチ リスナーを追加しました。アクティビティには、線を引くために必要なポイントを取得するために使用しようとしている別のタッチ リスナーもあります。私が知る限り、タッチ リスナーは問題なく動作しています。相互に干渉していません。

問題は、線をプロットするための正しい座標を取得することです。押されたドットの中心(線の始点)の座標を取得する方法をいくつか試しましたが、まだ管理できていません。この質問には、詳細情報があります:ビューの中心の座標を取得します。2 番目の部分は、線の正しい終点を取得することです。この質問の目的のために、行末を指の位置​​に合わせたいと思います。と同じくらい簡単だと思いましたがmotionevent.getX() / getY()、これはうまくいきませんでした。代わりに、ドットのレイアウトに相対的なスケール上の座標と、レイアウト/画面全体に相対的な座標が混同されていました。

簡単に言えば、getX() と getY() の値が正しくありません。これが、ここで解決しようとしていることです。

スクリーンショットに示されているように、ドットを押し下げると、線の始点はほぼ正しい位置にありますが、終点はかなりずれています。理由は本当に説明できません。

私は試してみgetRawX()ましgetRawY()たが、より正確な値を返しますが、パディングの量によってはまだ正しくありません (またはそのようなもの - 100% 理解していません)。

これは私のコードを示しています

私の中でActivity

そして最後にLineView

ノート:

  • 左上のドットを呼んでい"dot 1"ます。

  • スクリーンショットを撮るときに指がわずかに動くため、スクリーンショットは完全に正確ではないかもしれませんが、説明した動作が発生しています。

スクリーンショット 1

スクリーンショット 2

他の情報/コードが必要な場合は、喜んで提供します。

これを読んでくれてありがとう - 長くなってすみません!

0 投票する
2 に答える
3851 参照

android - ボタンをタッチしたときに、ビュー全体に対するタッチの x/y 位置を取得するにはどうすればよいですか?

画面全体に関連するタッチ情報が欲しいのですが、ボタンに関連するだけのタッチ情報を取得しています。

イベントから取得している x と y はボタンに関連しています (0、0 はボタンの隅であり、画面の隅ではありません)。ボタンが押されたときのみ、画面全体に対する x と y の位置を取得するにはどうすればよいですか?

0 投票する
1 に答える
1443 参照

android - Android は 2 本指の長押しを検出します

私は絵を描くことができるアプリケーションを作成しています。描画は、pictureView、ビットマップを含むキャンバス、および onTouchListener によって実現されます。2 本指で短く押すと、最後のアクションを元に戻す機能を追加したいと考えています。私はこれを行うことでそれを達成しました:

そして、2本指で長押ししたときにすべての描画アクションを元に戻したいです。このようなことを試しましたが、一度しか検出されません。

どうすれば私が望むものを達成できますか?