【问题标题】:Android touchevent--- need help/suggestion according to scenarioAndroid touchevent---根据场景需要帮助/建议
【发布时间】:2011-07-13 09:30:23
【问题描述】:

现在我有一个 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 代码不工作

【问题讨论】:

    标签: android android-layout imageview touch-event android-imageview


    【解决方案1】:

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

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

    x 取自 event.getX() - circleCenterX,y 取自 event.getY() - circleCenterY(触摸位置与圆心的偏移)

    【讨论】:

    • 但圆圈是图像我没有手动绘制...如何获取图像视图的中心
    • 你可以取ImageView的宽度和高度,取一半。
    • 感谢您的快速回复,但请您解释一下如何,,, boolean inCenter = java.lang.Math.sqrt(xx + yy) -->作品
    • 以圆心为原点,这给你一个点到圆心的距离,如果它小于或等于圆的半径,那么它必须在圆内
    • 好的,非常感谢你,我已经在纸上完成了,看来你的技巧对我有用....明天我会实施它并让你知道非常感谢!!!!!!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多