У меня 9 кнопок, и я пытаюсь использовать аниматор объектов, чтобы изменить их положение с переводом. этот вид работает, но иногда кнопки go отключаются от экрана, я просто пытаюсь заставить каждую 2 кнопки поменять местами.
public void startTranslations(){
ArrayList<Button> buttonList = new ArrayList(Arrays.asList(cards));
while( buttonList.size() > 1){
Button but1 = buttonList.remove(new Random().nextInt(buttonList.size()));
Button but2 = buttonList.remove(new Random().nextInt(buttonList.size()));
times += 1;
translateViews(but1,but2);
}
}
public void translateViews(Button one, Button two){
//TranslateAnimation anim1 = new TranslateAnimation(one.getTranslationX(),two.getTranslationX(),one.getTranslationY(),two.getTranslationY());
float positions = two.getX() - one.getX();
Log.d("positions", "two - one : " + positions);
float positions1 = one.getX() - two.getX();
Log.d("positions", "one - one : " + positions1);
if(one.getX() < two.getX()){
positions = two.getX() - one.getX();
}else{
positions = one.getX() - two.getX();
}
ObjectAnimator animation = ObjectAnimator.ofFloat(one, "translationX", two.getX() - one.getX());
animation.setDuration(2000);
ObjectAnimator animation1 = ObjectAnimator.ofFloat(two, "translationX", one.getX()-two.getX());
animation1.setDuration(2000);
AnimatorSet animSetXY = new AnimatorSet();
animSetXY.playTogether(animation,animation1);
animSetXY.addListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animator) {
}
@Override
public void onAnimationEnd(Animator animator) {
catchtimes += 1;
if (catchtimes == times){
catchtimes = 0;
times = 0;
current += 1;
if (current < changes){
startTranslations();
}else{
status.setText(getString(R.string.pick_a_lamp));
}
}
}
@Override
public void onAnimationCancel(Animator animator) {
}
@Override
public void onAnimationRepeat(Animator animator) {
}
});
animSetXY.start();
}
спасибо за ваше время. Я также собираюсь в конечном итоге сделать позицию Y, я просто хочу, чтобы она работала для позиции X. Если вам нужна дополнительная информация, дайте мне знать