Android:如何知道用户是否还在上次活动中触摸屏幕

时间:2015-03-25 13:13:05

标签: android ontouchlistener ontouch

我有一个带有imageView的活动,当用户触摸它时,我打开另一个活动与另一个imageView在同一个地方与前一个相同,问题是,我需要知道用户是否仍在触摸imageView&自上次活动以来从未离开过屏幕的手指(所以我可以让他用手指移动新的图像)?

我试图听取触摸事件,但触摸事件仅在用户在渲染视图后开始触摸imageView时触发,因此他必须将手指从屏幕上移开。再次开始触摸imageView,我想解决这个问题。

我正在使用AndroidAnnotations,因此侦听器代码如下:

@Touch(R.id.myImageView)
public void movingImageViewByUser(View view, MotionEvent event) {
    // moving the button with the user finger here
}

1 个答案:

答案 0 :(得分:1)

您需要将触摸事件状态存储在全局变量中,该变量可以在两个活动之间访问。

有了这个,你需要一个单独的应用程序上下文类,如下所示:

import android.app.Application;

public class GlobalVars extends Application {
    public static Boolean mouseDown = false;
}

可以像这样访问变量:

final GlobalVars globs = (GlobalVars)context.getApplicationContext();
globs.mouseDown = true;

所以考虑到这一点,这应该是你的onTouchListener可能是这样的:

view.setOnTouchListener(new View.OnTouchListener() {
    @Override
    public boolean onTouch(View v,MotionEvent event) {
        final GlobalVars globs = (GlobalVars)context.getApplicationContext();
        switch(event.getAction()) {
            case MotionEvent.ACTION_DOWN:
                globs.mouseDown = true;
                break;
            case MotionEvent.ACTION_UP:
                globs.mouseDown = false;
                break;
        }
        return true;
    }
});

希望这有帮助