2016-04-23 26 views
6

Ho appena iniziato a utilizzare i percorsi clip nei drawable vettoriali. Voglio ruotare il tracciato della clip, ma non è possibile ruotare alcun percorso senza che si trovi in ​​un gruppo, in modo che possa avere proprietà pivotX e pivoty. Tuttavia, quando viene inserito in un gruppo, non taglia più i percorsi all'esterno di un gruppo (e quindi diventa inutile). C'è una soluzione per questo? Questo è il mio disegnabile (in questo stato, il ritaglio non funziona a causa di quello che ho detto):È possibile ruotare il livello del percorso clip di Drawable di Android?

<!-- drawable/bluetooth_audio.xml --> 
<vector xmlns:android="http://schemas.android.com/apk/res/android" 
    android:height="48dp" 
    android:width="48dp" 
    android:viewportWidth="24" 
    android:viewportHeight="24"> 

    <group 
     android:name="maskGroup" 
     android:pivotX="12" 
     android:pivotY="12"> 

     <clip-path 
      android:name="mask" 
      android:pathData="M12,0 V12 H24 V24 H0 V0"/> 

    </group> 

    <group 
     android:name="base" 
     android:pivotX="12" 
     android:pivotY="12"> 
     <path 
      android:fillColor="#FFF" 
      android:pathData="M12.88,16.29L11,18.17V14.41M11,5.83L12.88,7.71L11,9.58M15.71,7.71L10,2 
      H9V9.58L4.41,5L3,6.41L8.59,12L3,17.58L4.41,19L9,14.41V22H10L15.71,16.29L11.41,12M19.53,6.71L18.26,8M14.24,12L16.56,14.33C16.84,13.6 17,12.82 17,12C17,11.18 16.84,10.4 16.57,9.68L14.24,12Z"/> 
     <path 
      android:fillColor="#FFF" 
      android:pathData=" 
      M18.26,8 
      C18.89,9.18 19.25,10.55 19.25,12 
      C19.25,13.45 18.89,14.82 18.26,16 
      L19.46,17.22 
      C20.43,15.68 21,13.87 21,11.91 
      C21,10 20.46,8.23 19.53,6.71 
      " 
      /> 

    </group> 
</vector> 

risposta

1

realtà percorso e clip-percorso sono l'uso per scopi diversi.

Percorso clip: utilizzare per ottenere Canvas o dire view-port per disegnare.

Percorso: utilizzare per il rendering della vernice su tale vista.

Quindi, non utilizzare il percorso clip per disegni o animazioni. Se qualcosa che disegni al di fuori del percorso clip non sarà renderizzato o mostrato. Rif: httpveloper.mozilla.org/en/docs/cz/SVG/Element/clipPath

+0

ho visto i video di ingegneri Android che hanno utilizzato il percorso della clip per creare animazioni ... per quanto ne so, il percorso della clip è utilizzato per l'animazione su Lollipop (icone impostazioni rapide). Se il percorso della clip non è lo strumento che dovrei usare, che cos'è? Qual è lo strumento per realizzare questo tipo di animazione? –

0

È possibile animare le modifiche di un percorso di clip, se gli stati di inizio e fine hanno entrambi lo stesso numero di passaggi pathData ; forse invece di "ruotare" il tracciato della clip definisci lo stato finale di un tracciato clip "ruotato" e quindi l'animazione del percorso clip? L'objectAnimator per applicare potrebbe assomigliare a questo:

<objectAnimator 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:propertyName="pathData" 
android:valueFrom="M18 37 L38 37 L38 37 L18 37 Z" 
android:valueTo="M0 0 L56 0 L56 56 L0 56 Z" 
android:duration="600" 
android:interpolator="@android:interpolator/fast_out_slow_in" 
android:valueType="pathType" /> 

EDIT: Ho trovato questo nella documentazione Android

La classe AnimatedStateListDrawable consente di creare drawable che mostrano le animazioni tra i cambiamenti di stato della vista associato. Alcuni dei widget di sistema in Android 5.0 utilizzano queste animazioni per impostazione predefinita. L'esempio seguente mostra come definire un oggetto AnimatedStateListDrawable come risorsa XML:

La classe AnimatedStateListDrawable consente di creare drawable che mostrano animazioni tra le modifiche di stato della vista associata. Alcuni dei widget di sistema in Android 5.0 utilizzano queste animazioni per impostazione predefinita. L'esempio seguente mostra come definire un AnimatedStateListDrawable come una risorsa XML:

<!-- res/drawable/myanimstatedrawable.xml --> 
<animated-selector 
xmlns:android="http://schemas.android.com/apk/res/android"> 

<!-- provide a different drawable for each state--> 
<item android:id="@+id/pressed" 
android:drawable="@drawable/drawableP" 
    android:state_pressed="true"/> 
<item android:id="@+id/focused" 
android:drawable="@drawable/drawableF" 
    android:state_focused="true"/> 
<item android:id="@id/default" 
    android:drawable="@drawable/drawableD"/> 

<!-- specify a transition --> 
<transition android:fromId="@+id/default" 
android:toId="@+id/pressed"> 
    <animation-list> 
     <item android:duration="15" 
android:drawable="@drawable/dt1"/> 
     <item android:duration="15" 
android:drawable="@drawable/dt2"/> 
     ... 
    </animation-list> 
</transition> 
... 
</animated-selector> 

https://developer.android.com/reference/android/graphics/drawable/AnimatedStateListDrawable.html

https://developer.android.com/training/material/animations.html#Transitions