2016-04-23 48 views
6

Vektörel çizimlerde klip yollarını kullanmaya yeni başlıyorum. Klip yolunu döndürmek istiyorum, ancak herhangi bir yolu bir grupta olmaksızın döndürmek mümkün değil, böylece pivotX ve pivotY özelliklerine sahip olabilir. Bununla birlikte, bir gruba konduğunda, artık bir grubun dışındaki yolları bir araya getirmez (ve böylece işe yaramaz). Bunun için bir çözüm var mı? Bu benim çizilebilir öğesidir (bu durumda, kırpma, çünkü bahsettiğim şeyin çalışmıyor):Android çekilebilir klipsli katman katlanabilir mi?

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

cevap

1

Aslında yol ve klip yolu farklı bir amaç için kullanımıdır.

Klip-yol: get Tuval için kullanmak veya çizim için görünüm-port söylüyorlar.

Yol: bu görünüm-port boya işlemek için kullanılması.

Yani, çizimler veya animasyon için klip-yolunu kullanmayın. Klip yolunun dışında çizdiğiniz herhangi bir şey oluşturulmayacak veya gösterilmeyecektir. Ref: httpveloper.mozilla.org/en/docs/cz/SVG/Element/clipPath

+0

: Aşağıdaki örnek, bir XML kaynak olarak bir AnimatedStateListDrawable nasıl tanımlanacağı gösterir Lollipop'ta animasyon için kullanılır (hızlı ayarlar simgeleri). Klip yolu kullanmam gereken araç değilse, nedir? Bu tür bir animasyona ulaşmak için araç nedir? –

0

başlangıç ​​ve bitiş durumları hem pathData adımları aynı sayıda eğer, bir tırnaklı-yolu değişiklikleri animasyon mümkündür ; Belki de klip yolunu "döndürmek" yerine "döndürülen" bir klip yolunun son durumunu tanımlarsınız ve ardından klip yolunu canlandırırsınız? objectAnimator aşağıdaki gibi görünebilir uygulamak için:

<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: AnimatedStateListDrawable sınıf, ilişkili bakış durum değişiklikleri arasında animasyonlar göstermek drawables oluşturmanızı sağlar Android belgelere

içinde buldum. Android 5.0'daki bazı sistem widget'ları varsayılan olarak bu animasyonları kullanır. Aşağıdaki örnek, bir XML kaynağı olarak bir AnimatedStateListDrawable tanımlamak gösterir:

AnimatedStateListDrawable sınıfı, ilişkili görüntünün durum değişiklikleri arasında animasyonlar gösteren çekmeceler oluşturmanızı sağlar. Android 5.0'daki bazı sistem widget'ları varsayılan olarak bu animasyonları kullanır. Ben ... AFAIK, klip yolu animasyonlar yaratmak için klip yolunu kullandığı Android mühendislerinin videoları gördüm

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