私は非常に単純な小さなアプリケーションを拡張ビューで使っています。 問題は、私はonTouchEventで押されたものを見つけることができないということです。 私は、圧力点(xとy)を要素と比較し、どの要素がどれであるかを見てきたことを理解しました。onTouchEventのrectFの中で押された場合のチェック
しかし... 私が使用して矩形を宣言した。これまでのところ
Paint color= new Paint();
color.setColor(Color.BLACK);
rectF = new RectF(0.0f, 0.0f, 1.0f, 0.5f) ;
canvas.drawRect(rectF, color);
とても良い、しかし
public boolean onTouchEvent(MotionEvent event) {
int action = event.getAction() ;
float x = event.getX() ;
float y = event.getY() ;
switch(action) {
case MotionEvent.ACTION_DOWN:
if(rectF().contains(x, y)) {
// Something should happen
}
}
invalidate();
return true ;
}
onTouchEvent機能で、私は相対的なのいくつかの種類にrectFを設定ポイントは0〜1の範囲ですが、XとYは、画面サイズに応じて0以上のイベント範囲から取得します。
いずれかの値を簡単に変換できますか?
編集
は、タッチポイントの値とRectFがするorederにおいて同じ参照規模である必要はあり
public boolean onTouchEvent(MotionEvent event) {
int action = event.getAction() ;
float x = event.getX() ;
float y = event.getY() ;
int width = this.getWidth() ;
int height = this.getHeight() ;
switch(action) {
case MotionEvent.ACTION_DOWN:
if(rectF().contains(x/width, y/height)) {
// Something should happen
}
}
return true ;
}
を呼び出すことにより、画面サイズを取得することができます
rectF.contains(x/screenWidth, y/screenHeight);
代わりに 'this.getHeight()'と 'this.getWidth()'を使用しました。 – dubbe
@あなたの文脈はわかりませんでしたので、私は最も単純なケースについてアドバイスをしました – kostja
私は知っていて、完璧な助言でした。誰か他の人が同じことを探しているならば、 – dubbe