У меня есть кнопка. По нажатию кнопки я оживляю TextView.

Во время анимации клик не работает для просмотра текста.

 buttonclick.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
           final Animation animation = new TranslateAnimation(
                    Animation.RELATIVE_TO_SELF, 1.0f,
                    Animation.RELATIVE_TO_SELF, 10.0f,
                    Animation.RELATIVE_TO_SELF, 1.0f,
                    Animation.RELATIVE_TO_SELF, 10.0f);
            animation.setDuration(100000);
            textView.startAnimation(animation);
        }
    });


    textView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Toast.makeText(MainActivity.this,"Click",Toast.LENGTH_SHORT).show();
        }
    });
2
Rahul Giradkar 24 Апр 2017 в 14:08

2 ответа

Лучший ответ

Animation - это только анимация представлений, не изменяющаяся, это иллюзия ... Вы используете TranslateAnimation, поэтому вы перемещаете свои представления " смотри ", а не само представление. В конце концов, вы можете использовать метод setFillAfter(true), тогда View будет кликабельным ПОСЛЕ окончания анимации (но ваша анимация длинная / бесконечная ...).

Попробуйте вместо этого использовать Animator, который меняет «параметры» (в вашем случае реальную позицию) вида с каждым кадром анима

ObjectAnimator animX = ObjectAnimator.ofFloat(textView, "x", newx);
ObjectAnimator animY = ObjectAnimator.ofFloat(textView, "y", newy);
AnimatorSet animSetXY = new AnimatorSet();
animSetXY.playTogether(animX, animY);
animSetXY.start();
1
snachmsm 24 Апр 2017 в 14:19

Попробуй это

PropertyValuesHolder x = PropertyValuesHolder.ofFloat("x", 50f);
PropertyValuesHolder y = PropertyValuesHolder.ofFloat("y", 100f);
ObjectAnimator.ofPropertyValuesHolder(mTextView, x, y).start();

Таким образом, вы можете анимировать весь объект представления, а не только его содержимое.

0
Jay 24 Апр 2017 в 11:40
43586496