【问题标题】:setOnTouchListener issue with a custom view自定义视图的 setOnTouchListener 问题
【发布时间】:2014-10-31 08:35:36
【问题描述】:

我创建了一个自定义视图 - 在视图类本身上,我在 OnTouch 事件期间进行了一些计算 - 它显示如下:

    @SuppressLint("ClickableViewAccessibility") @Override
public boolean onTouchEvent(MotionEvent event) {
    if (event.getAction() == MotionEvent.ACTION_DOWN) {
          pointJoyPos.set((int)event.getX(),(int)event.getY());
          UpdateJoy();
    } else if (event.getAction() == MotionEvent.ACTION_MOVE) {
          pointJoyPos.set((int)event.getX(),(int)event.getY());
          UpdateJoy();
    }  else if (event.getAction() == MotionEvent.ACTION_UP) {
          pointJoyPos.set(pointJoyCentre.x,pointJoyCentre.y);
          UpdateJoy();
    }
    return true;
}

当我将此视图添加到我的 XML 以显示给用户时,我想显示最新的值,例如pointJoyPos,所以我写了以下...

THE_CUSTOM_VIEW.setOnTouchListener(new View.OnTouchListener(){

        @Override
        public boolean onTouch(View v, MotionEvent event) {
            // TODO Auto-generated method stub
            ValX = THE_CUSTOM_VIEW.GetValOfX();
            return false;
        }
    }
    );

...GetValOfX 位于自定义视图类中的位置,旨在返回 pointJoyPos.X。

我遇到的问题是我的值延迟了一步,我认为发生的事情是自定义视图的 onTouchEvent 在自定义视图本身之前在主要活动上运行。

我希望这很清楚!

关于如何克服这个问题以显示最新值的任何建议?

谢谢。

【问题讨论】:

    标签: android class view


    【解决方案1】:

    如果有人遇到同样的问题,我只是通过创建自定义事件来排序...

    https://gist.github.com/pipiscrew/10004381

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-22
      相关资源
      最近更新 更多