2017-02-21 55 views
0

我目前有一個列表視圖,我想根據網絡中的狀態改變動畫的顏色。 Sio很遠,這是工作,但它看起來不太流暢,是否有辦法讓它從透明,到顏色正常,但沒有長期的淡入淡出。Andriod ObjectAnimator背景顏色和文字

這是我的代碼到目前爲止。

List<ObjectAnimator> arrayListObjectAnimators = new List<ObjectAnimator>(); 

ObjectAnimator bgColor = ObjectAnimator.OfInt(
    DoorItemLayoutView, 
    "backgroundColor", 
    Color.Transparent, 
    color, 
    color, 
    Color.Transparent); 
bgColor.SetEvaluator(new ArgbEvaluator()); 

ObjectAnimator doorTxtColor = ObjectAnimator.OfInt(
    doorName, 
    "textColor", 
    Color.White, 
    textChangeColour, 
    textChangeColour, 
    Color.White); 
doorTxtColor.SetEvaluator(new ArgbEvaluator()); 

ObjectAnimator siteTxtColor = ObjectAnimator.OfInt(
    doorSiteName, 
    "textColor", 
    Color.White, 
    textChangeColour, 
    textChangeColour, 
    Color.White); 
siteTxtColor.SetEvaluator(new ArgbEvaluator()); 

ObjectAnimator doorIconBackground = ObjectAnimator.OfInt(
    doorImage.Background, 
    "background", 
    Color.Transparent, 
    Resource.Drawable.door_active_background, 
    Resource.Drawable.door_active_background, 
    Color.Transparent); 
doorIconBackground.SetEvaluator(new ArgbEvaluator()); 

arrayListObjectAnimators.Add(bgColor); 
arrayListObjectAnimators.Add(doorTxtColor); 
arrayListObjectAnimators.Add(siteTxtColor); 
arrayListObjectAnimators.Add(doorIconBackground); 

var objectAnimators = arrayListObjectAnimators.ToArray(); 
AnimatorSet animSetXY = new AnimatorSet(); 
animSetXY.PlayTogether(objectAnimators); 
animSetXY.SetDuration(2000); 
animSetXY.Start(); 
+0

你能解釋一下「兩者之間的長期淡化」是什麼意思?你可以分享你現在的動畫嗎? –

+0

我不能共享屏幕由於沒有披露,但淡化即透明和顏色之間的過渡,然後從顏色過渡。它會將它們變成黑色,而不是從顏色變爲透明。 – Philip

回答

1

的原因,你看到這樣的效果:

它去黑他們透明的,而不是從顏色到透明去。

是因爲如果你想擺脫黑色的Color.Transparent實際上是黑色的阿爾法0 你需要複製目標顏色和它的阿爾法設置爲0,並使用該顏色而不是Color.Transparent

+0

謝謝你做到了! – Philip