LinearGradient Center-Animation

9

Ich möchte das Zentrum eines linearen Farbverlaufs animieren, so dass am Anfang das gesamte Zeichenfeld color1 ist und am Ende das gesamte Zeichenfeld color2 ist und dazwischen der Mittelpunkt des Farbverlaufs von links nach rechts verschoben wird.

> %Vor%

Das Problem ist, dass setGradientCenter keinen Unterschied macht. Laut dieser Antwort Ссылка gibt es ein Problem mit setGradientCenter (), aber die Lösung in dieser Antwort funktioniert nicht für mich, weil Ich ändere den Farbverlauf in onTouch (), wenn der Benutzer seinen Finger über die Ansicht streicht, also muss es wirklich schnell sein.

Gibt es eine Möglichkeit, dies zu tun?

Ich möchte so etwas machen (das gesamte Touch-Zeug funktioniert großartig, aber nicht der animierte Farbverlauf):

    
DominicM 28.01.2014, 10:32
quelle

2 Antworten

3

Was Sie fragen, ist kein reiner linearer Gradient - ein linearer Gradient zwischen zwei Farben auf einer festen Breite hat nur eine mathematische Funktion, die ihn definiert, und deshalb können Sie den Mittelpunkt nicht ändern. Was ich denke, dass Sie suchen, ist ein fester Farbanfang und -ende und ein linearer Gradientbereich zwischen ihnen.

Versuchen Sie diese Lösung:

%Vor%

Dieser Code scheint schnell genug zu reagieren, erzeugt aber mehrere Instanzen von LinearGradient.

    
Raanan 01.03.2014 16:45
quelle
0

Sie können so etwas mit einer Suchleiste machen.

Sie müssen ein benutzerdefiniertes progressDrawable-Attribut festlegen und den Positionsmarker (thumb) in etwa so entfernen.

%Vor%

gradient_progress.xml

%Vor%

wobei right_colour eine Zeichen- oder Farbressource der rechten Farbe (blau) ist und die linke Farbe ein 9-patch Zeichen der linken Farbe (grün) ist, das zu transparent wird und nur die linke Kante streckt. Meine sieht so aus.

(Es ist weiß, verblasst bis transparent, so schwer hier zu sehen)

Dies ergibt eine Lösung, die schnell ist und keine Berührung erfordert, aber es hat einen Nachteil, es geht nicht ganz bis zum fernen Ende, also der 'lineare Gradient' Teil des Bildes ist immer noch sichtbar, auch wenn der Benutzer den ganzen Weg gegangen ist. Wenn das kein großes Problem ist, dann wird das gut funktionieren.

    
Tristan Burnside 03.03.2014 03:56
quelle