gpt4 book ai didi

java - 检测点击按钮的位置

转载 作者:行者123 更新时间:2023-11-30 02:04:55 25 4
gpt4 key购买 nike

我想知道是否有一种方法可以准确地知道点击按钮的位置,并根据用户点击按钮的位置采取不同的操作。像这样的东西:

fooBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
switch(onClickLocation){
case LEFT:
foo();
break;
case RIGHT:
bar();
break;
case MIDDLE:
baz();
break;
}
}
});

最佳答案

不使用 OnClickListenerOnTouchListener 为您提供了一个 MotionEvent,您可以使用它来确定实际触摸事件发生的位置。

例如,这里我在同一个View(称为):

row.setOnClickListener(this);

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
row.setOnTouchListener(new View.OnTouchListener() {
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
@Override
public boolean onTouch(View v, MotionEvent event) {
v
.findViewById(R.id.row_content)
.getBackground()
.setHotspot(event.getX(), event.getY());

return(false);
}
});
}

在这种情况下,我不需要知道小部件在哪里被触摸来处理点击,但我需要知道小部件在哪里被触摸来调整 RippleDrawable 背景,所以波纹似乎从用户触摸的地方发出。从 onTouch() 返回 false 意味着我没有使用触摸事件,因此最终我的 onClick() 方法也将被调用。

在您的情况下,要么:

  • onTouch() 中执行实际工作,或者

  • onTouch() 中缓存最后看到的触摸点,但直到 onClick()

  • 才开始工作

我的直觉告诉我,后者应该会给你更好的结果(例如,你不会误解长按),但我没有尝试做你正在寻求的事情。

关于java - 检测点击按钮的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30831129/

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