Android API Level 11 (ICS)MotionEvent
にはtransform
、Matrix
. これにより、実際に私がやっていることは幾分きれいになりますが、レベル 8 用にコーディングしています。
MotionEvent.transform()
以前のバージョンの Android で動作する便利な代替手段はありますか? 履歴座標とマルチタッチ座標をすべて変換して、相対座標と絶対座標の違いを正しく処理できるようにしたいと考えています。
私が本当に知りたいのはMotionEvent
、別の の変換されたコピーであるを作成できるかどうかですMotionEvent
。実際には任意の変換は必要ありませんが、変換とスケーリングの両方ができる必要があります。で翻訳できると思いますが、 (レベル 11 より前の)offsetLocation
をスケーリングする方法がわかりません。MotionEvent
特に、マルチタッチ イベントの座標を変換するにはどうすればよいですか? メソッドはobtain
、配列ではなく単一の (x,y) ペアを取ります。
これを行う理由は、一連の「子」オブジェクトにイベントをディスパッチするオブジェクトが 1 つあるためです。現在、これらの子のそれぞれが、アドホックな方法で座標を変換しています。ただし、親 (ディスパッチャ) は実行する必要がある変換を知っているMotionEvent
ため、子にディスパッチする前に (またはコピー) を変換する方がはるかにクリーンです。別の方法として、 をラップするMotionEvent
か、 からデータをコピーして変換する独自のクラスを作成するMotionEvent
こともできますが、MotionEvent
.