Android touchevent ---根据场景需要帮助/建议

时间:2011-07-13 09:30:23

标签: android android-layout imageview ontouchevent android-imageview

现在我有了一个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);

但是没有工作,我也让这个imageview不可见但是我的onTouch代码不能正常工作

1 个答案:

答案 0 :(得分:0)

onTouch方法中记录一个布尔值,以检查用户是否在圆圈范围内触摸。

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

其中x取自event.getX() - circleCenterX,y取自event.getY() - circleCenterY(触摸位置偏离圆心)