2017-02-21 6 views
0

Ich habe derzeit eine Listenansicht und ich möchte die Farbe der Animation abhängig von einem Status aus dem Netzwerk ändern. Sio weit das funktioniert, aber es sieht nicht zu flüssig, würde es einen Weg zu haben, so würde es von transparent, die Farbe normal, aber ohne eine lange verblassen dazwischen gehen.Andriod ObjectAnimator Hintergrund Farbe und Text

Hier ist mein Code so weit.

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

Können Sie erklären, was meinst du mit "eine lange verblassen zwischen"? Können Sie die Animation teilen, die Sie jetzt haben? –

+0

Ich kann den Bildschirm wegen der Nicht-Enthüllungen nicht teilen, aber das Fade, dh der Übergang zwischen dem Transparenten und der Farbe, dann von der Farbe zum Übergang. es geht darum, sie transparent zu machen, anstatt von der Farbe zu transparent zu gehen. – Philip

Antwort

1

Der Grund, warum Sie diesen Effekt sehen: sie transparent

es schwarz wird, statt von der Farbe transparent gehen.

ist, weil Color.Transparent mit Alpha tatsächlich schwarz ist 0. Wenn Sie den schwarzen loswerden wollen Sie die Zielfarbe kopieren müssen und legen Sie seine Alpha auf 0 und die Farbe anstelle von Color.Transparent

+0

Danke das hat den Trick gemacht! – Philip