Hallo,
ich habe mich bisher mehr mit iOS Programmierung beschäftigt und nehme jetzt Android mit ins Boot.
Daher komme ich zum Glück auch einigermaßen zügig vorwärts. Ist vieles ähnlich hat oft nur eine andere Benennung.
Ich habe nun eine View, die ich auf TouchEvent mit dem Finger über den Screen ziehen kann.
Beim Loslassen wird die View dann vom Screen Animiert.
Soweit so gut. Jetzt zu meinem Problem.
Nach der Animation möchte ich die View wieder im Zentrum des Screens erscheinen lassen.
Im Moment scheine ich die Animation nur rückgängig zu machen. Das heißt meine View kommt auf dem selben weg wieder zurückgeflogen.
Kann mir jemand einen Hinweis geben wie ich die View einfach im Zentrum des Screen erscheinen lasse?
Ich müsste irgendwie anders bei meiner ResetView Funktion vorgehen.
Soweit der Code:
@Override
public boolean onTouch(View v, MotionEvent event) {
final View myView = v;
float viewCenterX = main.getPivotX();
float viewCenterY = main.getPivotY();
float rightLimit = main.getPivotX() + 150;
switch (event.getAction()) {
case MotionEvent.ACTION_UP:
int[] location = new int[2];
myView.getLocationOnScreen(location);
if (location[0] + myView.getWidth() * 0.5 > rightLimit) {
Toast.makeText(this, "Right", Toast.LENGTH_SHORT).show();
myView.animate().setDuration(1000).alpha(0).translationX(myView.getWidth() + main.getWidth()).withEndAction(new Runnable() {
@Override
public void run() {
resetCardView();
}
});
} else {
resetCardView();
}
break;
case MotionEvent.ACTION_DOWN:
Log.d("ACTION_DOWN", "ACTION_DOWN");
dx = v.getX() - event.getRawX();
dy = v.getY() - event.getRawY();
break;
case MotionEvent.ACTION_MOVE:
Log.d("viewCenterX", String.valueOf(viewCenterX));
Log.d("viewCenterY", String.valueOf(viewCenterY));
myView.animate().rotation(15);
Log.d("ACTION_MOVE", "ACTION_MOVE");
v.setX(event.getRawX() + dx);
v.setY(event.getRawY() + dy);
break;
}
return false;
}
private void resetCardView(){
View myView = (View) findViewById(R.id.ShoppingListCard1);
myView.animate().translationX(0).translationY(0).alpha(1).rotation(0);
}
Alles anzeigen