繁体   English   中英

Android ObjectAnimator背景颜色和文本

[英]Android ObjectAnimator background Colour and text

我目前有一个列表视图,我想让动画根据网络的状态更改颜色。 到目前为止,这是行得通的,但看起来并不太流畅,有没有办法让它从透明变为正常的颜色,但之间不会出现长时间的褪色。

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

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

您看到此效果的原因:

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

是因为Color.Transparent实际上是带有0的黑色。如果要去除黑色,则需要复制目标颜色并将其alpha设置为0,然后使用该颜色代替Color.Transparent。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM