Tengo un diseño de Motion KeyCycle como -

<KeyFrameSet>
   <KeyCycle
     app:motionTarget="@+id/button"
     app:framePosition="75"
     app:wavePeriod="3"
     app:waveOffset="0dp"
     app:waveShape="triangle"
     android:translationY="50dp" />
</KeyFrameSet>

Solo veo que mi botón está temblando de principio a fin y lo hace incluso antes de que se alcance la posición del cuadro. ¿No entiendes lo que hace la posición del marco aquí? Además, ¿por qué no veo un movimiento triangular?

Además, ¿cuál es la diferencia entre KeyCycle y KeyTimeCycle?

0
Ma2340 21 ene. 2021 a las 02:03

1 respuesta

La mejor respuesta

Si solo se crea un KeyCycle, se "copia" como un inicio y un final. (dándote 3)

Creaste efectivamente:

<KeyFrameSet>
<KeyCycle
   app:motionTarget="@+id/button"
   app:framePosition="0"
   app:wavePeriod="3"
   app:waveOffset="0dp"
   app:waveShape="triangle"
   android:translationY="50dp" />
 <KeyCycle
   app:motionTarget="@+id/button"
   app:framePosition="75"
   app:wavePeriod="3"
   app:waveOffset="0dp"
   app:waveShape="triangle"
   android:translationY="50dp" />
 <KeyCycle
   app:motionTarget="@+id/button"
   app:framePosition="100"
   app:wavePeriod="3"
   app:waveOffset="0dp"
   app:waveShape="triangle"
   android:translationY="50dp" />
 </KeyFrameSet>

Suena como si quisieras crear una rampa de amplitud:

<KeyFrameSet>
<KeyCycle
   app:motionTarget="@+id/button"
   app:framePosition="0"
   app:wavePeriod="3"
   app:waveOffset="0dp"
   app:waveShape="triangle"
   android:translationY="0dp" />
 <KeyCycle
   app:motionTarget="@+id/button"
   app:framePosition="75"
   app:wavePeriod="3"
   app:waveOffset="0dp"
   app:waveShape="triangle"
   android:translationY="50dp" />
 <KeyCycle
   app:motionTarget="@+id/button"
   app:framePosition="100"
   app:wavePeriod="3"
   app:waveOffset="0dp"
   app:waveShape="triangle"
   android:translationY="0dp" />
 </KeyFrameSet>

O una rampa de frecuencia:

<KeyFrameSet>
<KeyCycle
   app:motionTarget="@+id/button"
   app:framePosition="0"
   app:wavePeriod="0"
   app:waveOffset="0dp"
   app:waveShape="triangle"
   android:translationY="50dp" />
 <KeyCycle
   app:motionTarget="@+id/button"
   app:framePosition="75"
   app:wavePeriod="3"
   app:waveOffset="0dp"
   app:waveShape="triangle"
   android:translationY="50dp" />
 <KeyCycle
   app:motionTarget="@+id/button"
   app:framePosition="100"
   app:wavePeriod="0"
   app:waveOffset="0dp"
   app:waveShape="triangle"
   android:translationY="50dp" />
 </KeyFrameSet>

KeyCycle frente a KeyTimeCycle

Una transición mueve un valor que llamamos progreso de 0.0 a 1.0 KeyCycle es una animación con respecto al progreso. KeyTimeCycle son ciclos en el tiempo. Si tuviera una transición de 1 segundo que fuera lineal, serían idénticas. Pero con gestos controlados por deslizamiento, ¡progreso! = Tiempo, ya que puede detener el progreso en el medio. Generalmente use KeyCycle, es más fácil de controlar con precisión.

Videos cortos en ambos

1
hoford 22 ene. 2021 a las 00:57