Поменять местами кнопки с помощью Object Animator android - PullRequest
0 голосов
/ 19 июня 2020

У меня 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. Если вам нужна дополнительная информация, дайте мне знать

...