2016-04-23 55 views
6

Właśnie zacząłem używać ścieżek klipów w wektorach. Chcę obrócić ścieżkę klipu, ale nie można obrócić żadnej ścieżki bez jej umieszczenia w grupie, aby mogła ona mieć właściwości przestawne i obrotowe. Jednak po umieszczeniu w grupie nie ściąga ścieżek poza grupę (i staje się bezużyteczna). Czy istnieje obejście tego problemu? To jest mój odkształcalne (w tym stanie, obcinanie nie działa z powodu tego, co już wspomniałem):Czy można obrócić warstwę klipsa do rysowania Androida?

<!-- 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> 

Odpowiedz

1

Właściwie ścieżka clip-path to wykorzystanie do różnych celów.

Clip-path: użyj, aby uzyskać Canvas lub powiedz widok-port do rysowania.

Ścieżka: użyj do renderowania farby na tym porcie widokowym.

Nie używaj więc ścieżki do rysunków ani animacji. Jeśli cokolwiek, co rysujesz poza ścieżką klipu, nie będzie renderowane ani pokazywane. Ref: httpveloper.mozilla.org/en/docs/cz/SVG/Element/clipPath

+0

widziałem filmy z Androidem inżynierów, którzy używali ścieżkę klipu do tworzenia animacji ... AFAIK, ścieżka klip służy do animacji na Lollipop (ikony szybkich ustawień). Jeśli ścieżka do klipu nie jest narzędziem, które powinienem użyć, co to jest? Jakie jest narzędzie do osiągnięcia tego typu animacji? –

0

Możliwe jest animowanie zmian ścieżki klipu, jeśli oba stany początkowy i końcowy mają tę samą liczbę kroków pathData ; może zamiast "obrócić" ścieżkę klipu zdefiniujesz stan końcowy "obróconej" ścieżki klipu, a następnie animujesz ścieżkę klipu? ObjectAnimator zastosowanie mógłby wyglądać następująco:

<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: Znalazłem to w Android dokumentacji

AnimatedStateListDrawable klasa umożliwia tworzenie animacji kanału alfa, które pokazują między zmianami państwowych związanego widzenia. Niektóre z widżetów systemowych w Androidzie 5.0 domyślnie korzystają z tych animacji. Poniższy przykład pokazuje, jak zdefiniować AnimatedStateListDrawable jako zasób XML:

Klasa AnimatedStateListDrawable pozwala tworzyć rysunki, które pokazują animacje między zmianami stanu powiązanego widoku. Niektóre z widżetów systemowych w Androidzie 5.0 domyślnie korzystają z tych animacji. Poniższy przykład pokazuje, jak zdefiniować AnimatedStateListDrawable jako zasób 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