Android:如何确定是否按下或释放视图?

时间:2015-09-27 08:59:11

标签: android android-view

我知道有一个MotionEvent,但这是一个不同的情况:我希望View变得越来越大,而我触摸它,并逐渐缩小到原来的大小,如果我不再按View

onTouchEvent仅在我第一次按View时调用ACTION_DOWN);发布ViewACTION_UP);或擦洗我的手指(ACTION_MOVE)。他们对我的案子没有帮助。所以我想知道,有没有优雅的解决方案,而不是使用像计时器来解决低级别的问题?

1 个答案:

答案 0 :(得分:1)

不,没有一种优雅的方法可以做到这一点(如果你考虑使用计时器作为不优雅的)。但我真的不担心使用这些解决方案。你可以这样做(假设view是你动画的View):

  1. 添加字段(管理您的View - ActivityFragment):
  2. private static final float SCALE_FACTOR = 0.2f;
    private static final long STEP_DELAY = 300;
    private Handler handler = new Handler();
    private Runnable runnable = new Runnable() {
        @Override
        public void run() {
            view.animate().scaleXBy(SCALE_FACTOR).scaleYBy(SCALE_FACTOR);
            handler.postDelayed(runnable, STEP_DELAY);
        }
    };
    
    1. 为您OnTouchListener设置View
    2. view.setOnTouchListener(new View.OnTouchListener() {
          @Override
          public boolean onTouch(View v, MotionEvent event) {
              switch (event.getAction()) {
                  case MotionEvent.ACTION_DOWN:
                      handler.postDelayed(runnable, STEP_DELAY);
                      return true;
                  case MotionEvent.ACTION_CANCEL:
                  case MotionEvent.ACTION_UP:
                      userImage.animate().cancel();
                      handler.removeCallbacks(mRunnable);
                      return false;
              }
              return true;
          }
      });
      

      调整SCALE_FACTORSTEP_DELAY以完全符合您的需求。