gpt4 book ai didi

android - 如何用 onTouchListener 改变 fab 的位置?

转载 作者:行者123 更新时间:2023-11-30 01:05:14 24 4
gpt4 key购买 nike

我正在使用 float 操作按钮。我想在用户触摸并拖动 fab 时更改 fab 的位置。我正在使用 onTouchListener,但它不能很好地移动晶圆厂。这是我的代码:

final FloatingActionButton fabButton = new FloatingActionButton.Builder(this)
.withDrawable(getResources().getDrawable(R.drawable.fab))
.withButtonColor(Color.WHITE)
.withGravity(Gravity.BOTTOM | Gravity.RIGHT)
.withMargins(0, 0, 16, 16)
.create();
fabButton.setAlpha(0.6f);
fabButton.setOnTouchListener(new OnTouchListener() {

@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
fabButton.setX(event.getX());
fabButton.setY(event.getY());

return false;
}
});

提前感谢任何建议...

最佳答案

问题出在return false;如果监听器在手指按下事件时返回 false,则移动事件将被忽略,简单来说。试试这个代码:

fabButton.setOnTouchListener(new View.OnTouchListener() {

float x, y;
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()){

case MotionEvent.ACTION_MOVE:

fabButton.setX(fabButton.getX() + (event.getX() - x));
fabButton.setY(fabButton.getY() + (event.getY() - y));
return true;
case MotionEvent.ACTION_DOWN:
x = event.getX();
y = event.getY();
return true;
}

return false;
}
});

此外,由于 xy 是 View 左上角的坐标,您可能不想设置 xy 触摸作为这些坐标。相反,您应该计算移动增量并增加 fab 的初始坐标,正如我在上面的代码 fragment 中指定的那样

关于android - 如何用 onTouchListener 改变 fab 的位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38922084/

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