Ich benutze diesen Code, um eine Schaltfläche auf dem Bildschirm zu verschieben, aber wenn ich die Seiten erreichen, bewegt es sich aus den Bildschirmen.So erstellen Sie eine bewegliche Schaltfläche, die nicht aus dem Bildschirm bewegt
private float mPrezX, mPrevY;
private static final int MAX_CLICK_DURATION = 200;
private long startClickTime;
@Override
public boolean onTouch(View view, MotionEvent event) {
int action = event.getActionMasked();
Button gvup = (Button)findViewById(R.id.giveup);
gvup.setBackground(getResources().getDrawable(R.drawable.btn));
switch (action) {
case MotionEvent.ACTION_DOWN: {
mPrevX = view.getX() - event.getRawX();
mPrevY = view.getY() - event.getRawY();
startClickTime = Calendar.getInstance().getTimeInMillis();//!!
gvup.setBackground(getResources().getDrawable(R.drawable.btn1));
break;
}
case MotionEvent.ACTION_MOVE:
{
view.animate()
.x(event.getRawX() + mPrevX)
.y(event.getRawY() + mPrevY)
.setDuration(0)
.start();
gvup.setBackground(getResources().getDrawable(R.drawable.btn1));
break;
}
case MotionEvent.ACTION_CANCEL:
gvup.setBackground(getResources().getDrawable(R.drawable.btn1));
break;
case MotionEvent.ACTION_UP:
long clickDuration = Calendar.getInstance().getTimeInMillis() - startClickTime;
if(clickDuration < MAX_CLICK_DURATION) {
//click event has occurred
gvup.setBackground(getResources().getDrawable(R.drawable.btn));
giveUp();
}
break;
}
return true;
}
Ich ändere auch seine Hintergrundfarbe, wenn gedrückt und auch klickbar gemacht.
Ich brauche diesen Knopf im Layout zu halten.
Ich habe auch this und this Links versucht, aber beide Ansätze führen dazu, den Knopf zu drücken, wenn sie zu den Seiten bewegt werden.
Bitte helfen. Vielen Dank im Voraus.
Ich habe Ihre Idee und ich habe es versucht, aber es funktioniert nicht die Art, wie ich es implementiere. –