0

我有一个带有 imageView 的活动,当用户触摸它时,我在与前一个相同的位置打开另一个带有另一个 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
}
4

1 回答 1

1

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

这样,您将需要一个单独的Application-context 类,如下所示:

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;
    }
});

希望这可以帮助

于 2015-04-19T14:56:08.040 回答