Android:动画时不会触发Click事件

时间:2017-04-24 11:08:28

标签: android animation

我有一个按钮。单击按钮我为TextView设置动画。

在动画时,点击不适用于texview。

 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 个答案:

答案 0 :(得分:1)

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 :(得分:0)

试试这个

PropertyValuesHolder x = PropertyValuesHolder.ofFloat("x", 50f);
PropertyValuesHolder y = PropertyValuesHolder.ofFloat("y", 100f);
ObjectAnimator.ofPropertyValuesHolder(mTextView, x, y).start();
通过这种方式,您可以为整个视图对象设置动画 - 而不仅仅是内容。