Android ObjectAnimator背景颜色和文字

时间:2017-02-21 16:38:56

标签: c# android xamarin xamarin.android

我目前有一个列表视图,我希望根据网络状态改变动画颜色。 Sio这是有效的,但它看起来不太流畅,有没有办法让它从透明到正常的颜色,但没有长时间的淡入淡出。

到目前为止,这是我的代码。

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();

1 个答案:

答案 0 :(得分:2)

您看到这种效果的原因:

  

它将黑色变为透明,而不是从颜色变为透明。

是因为Color.Transparent实际上是黑色的,带有alpha 0。 如果你想摆脱黑色你需要复制目标颜色并将其alpha设置为0并使用该颜色而不是Color.Transparent