【问题标题】:Android: how to know if user is still touching screen from last activityAndroid:如何知道用户是否仍在上次活动中触摸屏幕
【发布时间】:2015-05-29 04:26:03
【问题描述】:

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

我尝试监听触摸事件,但触摸事件仅在用户在视图呈现后开始触摸 imageView 时触发,因此他必须将手指离开屏幕并再次开始触摸 imageView,这是我想要的解决这个问题。

我使用的是AndroidAnnotations,所以监听器代码是这样的:

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

【问题讨论】:

  • 你可以使用 onTouch() 并跟踪 action down 事件
  • @Anuj ,问题是,用户必须将手指放在屏幕上,然后再次开始触摸它,否则onTouch() 不会触发

标签: android ontouchlistener ontouch


【解决方案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;
    }
});

希望对你有帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-26
    • 1970-01-01
    • 1970-01-01
    • 2012-02-14
    • 1970-01-01
    • 2012-03-04
    • 1970-01-01
    相关资源
    最近更新 更多