Выполнение анимации вида после добавления вида - PullRequest
0 голосов
/ 23 мая 2018

Итак, моя проблема в том, что я хочу, чтобы после двойного щелчка по элементу в адаптере RecyclerView активировалась анимация в ImageView.Я обнаруживаю двойное нажатие в адаптере, беру координаты повернутой области в формате int[] location, вызываю метод во фрагменте, передавая местоположение.

public void performAnimation(int[] location) {

    ImageView imageView = new ImageView(getContext());
    imageView.setImageDrawable(getActivity().getDrawable(R.drawable.ic_imageview));
    ConstraintLayout.LayoutParams params =
            new ConstraintLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);

    params.setMargins(0, location[0], 0, location[1]);

    imageView.setLayoutParams(params);
    parentViewGroup2.addView(imageView);


    ObjectAnimator translateAnim = ObjectAnimator.ofFloat(imageView, View.TRANSLATION_Y, 0.5f);
    translateAnim.setDuration(2000);
    translateAnim.start();

Так что проблема в том, что я могу только рисоватьизображение в макете, но анимация не запускается.Я также пробовал это с TransitionManager с beginDelayedTransition, но опять же, ничего.У кого-нибудь есть идеи, что я делаю не так?Заранее спасибо.

1 Ответ

0 голосов
/ 23 мая 2018

ObjectAnimator.ofFloat получает массив значений с плавающей запятой, значение которых будет проходить через анимацию. Вы передаете только 1 0.5f параметр, которого недостаточно.Кроме того, float здесь должен быть переведен в абсолютный пиксель на экране, а не в значение смещения.

Попробуйте вместо этого ViewPropertyAnimator:

imageView.animate().translationY(400).setDuration(200).start();
...