0

现在我有一个 ImageView 和它的一个圆圈,它位于比中心位置略低的位置(但这不重要)。

我已经为 ACTION_DOWN,ACTION_UP 编写了 ImageView 的触摸代码,现在考虑用户将手指放在圆圈上并移动和移动....我想在用户移动手指并超出 CIRCLE 图像区域时激活一些代码(只要用户超出区域代码应该只执行一次)

这是我的代码

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 归档我的目标:如果用户在圆圈内移动手指,它就会开始工作

我的第二个查询是如何设置我使用过的这个 imageview 的 alpha

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 回答