gpt4 book ai didi

java - Android监听触摸释放

转载 作者:搜寻专家 更新时间:2023-11-01 08:54:57 24 4
gpt4 key购买 nike

我正在尝试听触摸释放,但事件没有被触发。

这是我的代码:

public class MyView extends View {
public MyView(final Context context) {
super(context);
setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent e) {
if (e.getAction() == MotionEvent.ACTION_DOWN) {
makeToast("press", context);
} else if (e.getAction() == MotionEvent.ACTION_UP || e.getAction() == MotionEvent.ACTION_CANCEL) {
makeToast("release", context);
}

return false;
}
});
}

void makeToast(String s, Context c) {
CharSequence text = s;
int duration = Toast.LENGTH_SHORT;

Toast toast = Toast.makeText(c, text, duration);
toast.show();
}

}

Activity 类:

public class MyActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
MyView v = new MyView(getApplicationContext());
setContentView(v);
}
}

发生的事情是,当我触摸屏幕时,会出现一个写有“按下”的 toast ,但是当我释放触摸时,不会出现任何 toast ,而我期待一个写有“释放”的 toast 出现。

我错过了什么?

最佳答案

您需要在 onTouchListener 中返回 true 而不是 false。

发生的情况是首先触发了 Action Down,但您返回了 false,表示未处理 Action Down。

如果您返回 true,它将确保它捕获的每个 Action 都得到了完整处理,只有当您知道需要其他 View 来处理该 Action 时,您才会返回 false。

祝你好运!

关于java - Android监听触摸释放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19820764/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com