2017-06-06 29 views
0

我設法有一個約束佈局中間圖像的相對佈局 - 應顯示此圖像而不是Toast消息(淡入=>淡出)Android佈局覆蓋tobe使用,而不是吐司

當應用程序啓動時 - 只是爲了證明它的工作原理 - 它顯示來自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的佈局本身設置 - OK

當我設置喜歡它改變了形象,淡化其負值出

當我設置像正值它使用的豎起大拇指,並淡出出來

但它僅適用衰圖像第一次也是唯一淡出部分。 一旦消失,我可以再次調用這個函數,它不會再顯示任何圖片。

任何想法,我的錯誤是什麼?

它應該像Toast消息一樣工作(淡入=>淡出)。

回答

1

首先在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(); 
+0

它應該像吐司-消息:淡入畫面,再次淡出出來 - 我會給你的解決方案嘗試 – Kev

+0

@Kev我已經更新了答案。 – IvBaranov

+0

非常感謝!我去了第一個解決方案,因爲它對我來說更清楚它是如何工作的;-)順便說一句,我沒有改變,因爲在= 0的情況下,我不想要任何動畫。 – Kev