Android布局覆盖tobe使用而不是烤面包



我设法在约束布局上具有一个相对布局,其中中间有一个图像 - 应显示此图像而不是吐司 - 消息(vade in => fade ut(

应用程序启动时 - 只是为了证明其有效 - 它显示了来自XML设置的图像(拇指向上/可见性(。

现在我想使用以下功能来更改图像:

  public void showThumbs(Integer like){
    if (like > 0){
        overlayout.bringToFront();
        overlay.setImageResource(R.drawable.like);
        overlay.bringToFront();
        overlay.animate().alpha(1.0f).setDuration(800);
        overlay.animate().alpha(0.0f).setDuration(800);
    }
    if (like < 0){
        overlayout.bringToFront();
        overlay.setImageResource(R.drawable.dislike);
        overlay.bringToFront();
        overlay.animate().alpha(1.0f).setDuration(800);
        overlay.animate().alpha(0.0f).setDuration(800);
    }
}

我试图使用无效的可见度,现在我尝试了动画推子。

发生了什么:

在开始时,它显示了在XML -Layout本身中设置的拇指-OK

当我设置为负值时,它会改变图像并淡出

当我设置为正值时,它会使用大拇指并淡出

但是它只能在第一次淡出图像,只有淡出的部分。一旦它消失了

任何想法我的错误在哪里?

它应该像吐司报道一样工作(淡出=>淡出(。

首先, if语句之间应该有 else。因此,您应该有if( ){ } else { }而不是if( ) { } if( ) { }

其次,这条线使您的图像永久不可见:

overlay.animate().alpha(0.0f).setDuration(800);

为了使它起作用,您应该"链"动画。第一个选择是:

if (isLiked) {
    overlay.setImageResource(R.drawable.like);
    // overlay is invisible by default
    overlay.animate()
        .alpha(1.0f)
        .setListener(new AnimatorListenerAdapter() {
          @Override
          public void onAnimationEnd(Animator animation) {
            super.onAnimationEnd(animation);
            overlay.animate().alpha(0.0f).setDuration(800);
          }
        }).setDuration(800);
} else {
    //... 
}

另一个选项是使用AnimatorSet。

ObjectAnimator fadeOut = ObjectAnimator.ofFloat(overlay, "alpha",  1f, 0f);
fadeOut.setDuration(800);
ObjectAnimator fadeIn = ObjectAnimator.ofFloat(overlay, "alpha", 0f, 1f);
fadeIn.setDuration(800);
final AnimatorSet mAnimationSet = new AnimatorSet();
mAnimationSet.play(fadeOut).after(fadeIn);
mAnimationSet.start();

最新更新