上一次触摸后60秒后开始为ViewFlipper启动StartFlipping。

3

我的应用程序包含一个带有一些图片的ViewFlipper,当应用程序启动时,ViewFlipper会自动开始翻转。当用户触摸屏幕时,ViewFlipper会停止翻转。我必须在最后一次触摸后60秒后再次开始翻转ViewFlipper。我的类实现了onTouchListener并且我有这个方法onTouch:

public boolean onTouch(View arg0, MotionEvent arg1) {


        switch (arg1.getAction()) {
        case MotionEvent.ACTION_DOWN: {

            downXValue = arg1.getX();
            break;
        }

        case MotionEvent.ACTION_UP: {

            currentX = arg1.getX();


            if (downXValue < currentX) {
                // Set the animation
                vf.stopFlipping();
                vf.setOutAnimation(AnimationUtils.loadAnimation(this,
                        R.anim.push_right_out));
                vf.setInAnimation(AnimationUtils.loadAnimation(this,
                        R.anim.push_right_in));
                // Flip!
                vf.showPrevious();
            }


            if (downXValue > currentX) {
                // Set the animation
                vf.stopFlipping();
                vf.setOutAnimation(AnimationUtils.loadAnimation(this,
                        R.anim.push_left_out));
                vf.setInAnimation(AnimationUtils.loadAnimation(this,
                        R.anim.push_left_in));
                // Flip!
                vf.showNext();
            }

            if (downXValue == currentX) {
                final int idImage = arg0.getId();

                vf.stopFlipping();
                System.out.println("id" + idImage);
                System.out.println("last touch "+getTimeOfLastEvent());

            }
            break;
        }
        }

        // if you return false, these actions will not be recorded
        return true;
    }

我发现了一种寻找最近一次触摸时间的方法:

static long timeLastEvent=0;
public long getTimeOfLastEvent() {

        long duration = System.currentTimeMillis() - timeLastEvent;
        timeLastEvent = System.currentTimeMillis();
        return duration;
    }

我的问题是:我应该在什么地方调用getTimeOfLastEvent()?如果我将其放在onTouch()中,我永远也无法捕捉到getTimeOfLastEvent==60000的时刻,对吗?

1个回答

5
你需要做的是创建一个Handler实例(应该是Activity的实例变量,在onCreate期间初始化):
Handler myHandler = new Handler();

此外,您需要一个可以重新启动翻转的Runnable(也需要在您的Activity中声明):
private Runnable flipController = new Runnable() {
  @Override
  public void run() {
    vf.startFlipping();
  }
};

然后在您的 onClick 中,您只需将 Runnable 发布到 Handler 上,但延迟 60 秒:

myHandler.postDelayed( flipController, 60000 );

发布延迟意味着:“在60秒后运行此代码”。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接