现在我有了一个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代码不能正常工作
答案 0 :(得分:0)
在onTouch
方法中记录一个布尔值,以检查用户是否在圆圈范围内触摸。
boolean inCircle = java.lang.Math.sqrt(x*x + y*y) <= circleRadius
其中x取自event.getX() - circleCenterX
,y取自event.getY() - circleCenterY
(触摸位置偏离圆心)