0

今、私は ImageView と、中心位置より少し下にある円を持っています (しかし、これは問題ではありません)。

ACTION_DOWN、ACTION_UPのImageViewのコードonTouchを書きましたが、ユーザーが円に指を置いて移動して移動したと考えます....ユーザーが指を動かしてCIRCLE画像の領域を超えたときにいくつかのコードをアクティブにしたい(とすぐに)ユーザーがリージョンを超えた場合、コードは 1 回だけ実行する必要があります)

これが私のコードです

ImageView view1 = (ImageView) findViewById(R.id.fccircledetectionarea);

      view1.setOnTouchListener(new OnTouchListener()
      {

        @Override
        public boolean onTouch(View v, MotionEvent event) 
        {
            ImageView imageView=(ImageView) findViewById(R.id.fccircledetectionarea);
            switch(event.getAction())
            {
            case MotionEvent.ACTION_DOWN:
                final float x=imageView.getTop();


                Toast.makeText(PlayScreen.this, "Top Position:"+x, Toast.LENGTH_SHORT).show();
                break;
            case MotionEvent.ACTION_UP:
                Toast.makeText(PlayScreen.this, "Over", Toast.LENGTH_SHORT).show();
                break;

            case MotionEvent.ACTION_MOVE:


                Toast.makeText(PlayScreen.this, "Over", Toast.LENGTH_SHORT).show();
                break;

            }
            return true;
        }
    });

ACTION_MOVE を使用して目標をアーカイブできません: ユーザーが円内で指を動かすと機能し始めるためです。

そして私の2番目のクエリは、私が使用したこのイメージビューのアルファを設定する方法です

view1.setAlpha(0);

しかし、機能していません。また、このイメージビューを非表示にしましたが、onTouch コードが機能していません

4

1 に答える 1

0

メソッド内でonTouchブール値を記録して、ユーザーが円の境界内に触れているかどうかを確認します。

boolean inCircle = java.lang.Math.sqrt(x*x + y*y) <= circleRadius

x の取得元event.getX() - circleCenterXと y の取得event.getY() - circleCenterY元 (円の中心からのタッチ位置のオフセット)

于 2011-07-13T11:00:59.477 に答える