2015-11-16 15 views
7

the Android developer site, AnimatorSet sınıfını program yolunda aşağıdaki gibi bulunan xml dosyasından yükleyebiliriz: res/animator/filename.xml. Bu yüzden örnek bir proje oluşturdum ve gerçekten işe yarayıp yaramadığını görmeye çalıştım; hiçbir şey olmuyor. Neyin eksik olduğunu ve/veya yanlış yaptığımı anlayabilseydim çok güzel olurdu. Şimdiden teşekkürler! Aşağıda benim animatör xml dosyası ve Java kodu xml yüklemek için:Android'de animatör xml dosyasını nasıl yükleyebilirim?

res/animatör/örnek.xml:

FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); 
fab.setOnClickListener(new View.OnClickListener() { 
    @Override public void onClick(View view) { 
    // Load and start Animaton 
    AnimatorSet animSet = 
     (AnimatorSet) AnimatorInflater.loadAnimator(view.getContext(), R.animator.sample); 
    animSet.setTarget(view); 
    animSet.start(); 
    } 
}); 
:

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android" 
    android:ordering="sequentially" 
    > 
    <set> 
    <objectAnimator 
     android:propertyName="x" 
     android:duration="500" 
     android:valueTo="400" 
     android:valueType="intType" 
     /> 
    <objectAnimator 
     android:propertyName="y" 
     android:duration="500" 
     android:valueTo="300" 
     android:valueType="intType" 
     /> 
    </set> 
    <objectAnimator 
     android:propertyName="alpha" 
     android:duration="500" 
     android:valueTo="1f" 
     /> 
</set> 

Ve işte benim Java kodları yukarıdaki xml dosyasını yüklemek için

cevap

20

Başka bir Set res/animator/sample.xml Setini içerir. o

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android" 
    android:ordering="sequentially" 
    > 

    <objectAnimator 
     android:propertyName="alpha" 
     android:duration="500" 
     android:valueTo="1f" 
     /> 
</set> 

Sen Şimdiye kadar bu

AnimatorSet set = (AnimatorSet) AnimatorInflater.loadAnimator(getActivity(), R.animator.sample); 
set.setTarget(fab); // set the view you want to animate 
set.start(); 

gibi AnimatorSet şişirmek kolaylaştırın, Java için xml den objectAnimator şişirmek için bir yol bulamadı. Set

+1

O çalışmıyor, başvurabilirsiniz daha iyi anlaşılması için bir yöntem setX(float)

yoktur. :( – DysaniazzZ

+0

@DysaniazzZ daha açık olabilir misiniz? –

0

içinde sarmak zorundayım Bu, belgelerde verilen örnekte bir hatadır.

android:valueType="intType" değerini android:valueType="floatType" olarak değiştirmeyi deneyin. o açıkça değişmiyor olarak

O durumunda @RaymondChenon çalışır android:valueType böylece sistem öntanımlıyı alıyor int bir Buradaki sorun sizin animatör içinde android:valueType="intType" veriyoruz edilir float

hangi android:propertyName="x" için android:valueType="floatType" olması gerekiyor.

Çalışma zamanı sisteminde, özellik için ayarlayıcısını arayın. Sizin durumunuzda olduğu gibi setX()'u arar, ama int türünde argüman türünü tanımlarken, böyle bir yöntem olmadığından uyumsuzluğa neden olur, neden bir çarpışmaya yol açtığını bilmiyorum. Görünüm sınıfının özelliklerini

Bak, ya StackOverflow Question

İlgili konular