Android 如何通过OnTouch改变晶圆厂的位置?
我使用浮动动作按钮。当用户触摸并拖动晶圆厂时,我想更改晶圆厂的位置。我正在使用onTouchListener,但它不能很好地移动晶圆厂。 这是我的密码:Android 如何通过OnTouch改变晶圆厂的位置?,android,floating-action-button,Android,Floating Action Button,我使用浮动动作按钮。当用户触摸并拖动晶圆厂时,我想更改晶圆厂的位置。我正在使用onTouchListener,但它不能很好地移动晶圆厂。 这是我的密码: final FloatingActionButton fabButton = new FloatingActionButton.Builder(this) .withDrawable(getResources().getDrawable(R.drawable.fab)) .withButtonColor(Color.WHITE)
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;
}
});
感谢您提前提出的建议…问题出在
返回false
;若侦听器在finger down事件中返回false,那个么简单地说,move事件将被忽略。请尝试以下代码:
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;
}
});
另外,由于
x
和y
是视图左上角的坐标,您可能不希望将触摸屏的x
和y
设置为这些坐标。相反,您应该计算移动的增量并增加fab的初始坐标,正如我在上面的代码片段中指定的那样这不适用于我。我在使用SDK的android studio 4.2 C15上30@MiguelSilva你能通过pastebin分享你的代码吗?同时,我发现了为什么我使用定制的浮动操作按钮。这段代码需要做一些调整,我也正在把它变成一个开源库。您可以在这里找到:您是否尝试在处理的切换案例中返回true
?问题可能是,无论您在这个函数中执行什么操作,它都会返回super.onTouchEvent()