2

drawRect(Rect, Paint) を使用して描画する Rect オブジェクトがあります。タッチ位置が Rect 内にあるかどうかを確認する OnTouchEvent があります。タッチが Rect 内にある場合、画面上の何かが変化します。私が抱えている問題は、 on touch ステートメントを実行するためにタッチする必要がある場所が、 Rect オブジェクトよりも約 50 ピクセル高いことです。

私のコードの関連部分は次のとおりです。

public class MainActivity extends Activity {
    DrawView drawView;
    RelativeLayout fLY;
    static Rect newGame = new Rect(LEFT, 165 + 35, 320, 200 + 35);

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
        fLY = new RelativeLayout(this);
        drawView = new DrawView(this);
        fLY.addView(drawView);
        setContentView(fLY);
    }

    @Override
   public boolean onTouchEvent(MotionEvent event) {
        int touchX = (int)event.getX();
        int touchY = (int)event.getY();
        switch(event.getAction()){
            case MotionEvent.ACTION_DOWN:
            if(newGame.contains(touchX, touchY))reset();
        }
    }

そして私の DrawView クラス:

public class DrawView extends View{
    Paint paint = new Paint();
    int COLORS[] = Constants.COLORS;
    int left = 250;
    int size = 35;

    public DrawView(Context context) {
        super(context);   
    }

    @Override
    public void onDraw(Canvas canvas) {
        canvas.drawRect(MainActivity.newGame, paint);
    }
 }
4

1 に答える 1

0

ステータス バーの高さだけずれている可能性があります。この回答でステータスバーの高さを取得できます: ステータスバーの高さ?

次に、それをあなたに追加するgetYと、動作するはずです。

于 2013-04-04T05:04:11.327 に答える