2017-02-21 17 views
0

В настоящее время у меня есть вид списка, и я хочу, чтобы цвет анимации менялся в зависимости от состояния сети. Сио далеко, это работает, но это не выглядит слишком жидким, был бы способ сделать так, чтобы он шел от прозрачного, до нормального цвета, но без долгого затухания между ними.Andriod ObjectAnimator background Цвет и текст

Вот мой код.

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