TranslateAnimation第一次不起作用

时间:2018-05-15 11:59:47

标签: android animation visibility

我希望通过点击它的行,从右到左/从左到右显示/去掉动画按钮, 这是我将其设置为可见的代码:

button.setVisibility(View.VISIBLE);
TranslateAnimation animate = new TranslateAnimation(button.getWidth(),0,0,0);
animate.setDuration(500);
animate.setFillAfter(true);
button.startAnimation(animate);

并且为了消失:

TranslateAnimation animate = new TranslateAnimation(0,button.getWidth(),0,0);
animate.setDuration(500);
animate.setFillAfter(true);
button.startAnimation(animate);

默认情况下,按钮消失了。这是我第一次单击该行时,按钮已变为可见但没有动画。之后它可以正常工作。为什么第一次动画不起作用?

enter image description here

2 个答案:

答案 0 :(得分:0)

在开始动画之前,请致电button.setY(button.getWidth())以设置其位置。

答案 1 :(得分:0)

您可以使用 Delay 第一次工作

       TranslateAnimation animate1 = new TranslateAnimation(
                    0,                 // fromXDelta
                    0,                 // toXDelta
                    0,  // fromYDelta
                    binding.saveCardview.getMeasuredHeight());                // toYDelta
                animate1.setDuration(500);
                animate1.setFillAfter(true);
                binding.saveCardview.startAnimation(animate1);

                final Handler handler = new Handler(Looper.getMainLooper());
                handler.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        //Do something after 100ms
                        binding.saveCardview.setVisibility(View.GONE);
                    }
                }, 500);