2016-07-21 9 views
2

APIで作業していない15アニメーションベクトルDrawableのは、私はAPIレベルのデバイス上でアニメーションベクトルDrawableのを実行しようとしてきた15

私のアニメーションベクトル「animated_feedback.xml」を以下に示します。

<animated-vector xmlns:android="http://schemas.android.com/apk/res/android" 
       android:drawable="@drawable/feedback"> 

    <target 
    android:animation="@animator/background_circle_animator" 
    android:name="BG_White_Circle"/> 

</animated-vector> 

描画可能「feedback.xml」は、以下が含まれています

<vector xmlns:android="http://schemas.android.com/apk/res/android" 
     android:width="180dp" 
     android:height="180dp" 
     android:viewportWidth="180" 
     android:viewportHeight="180"> 
    <group 
     android:name="BG_White_Circle_Group"> 
     <path 
      android:name="BG_White_Circle" 
      android:fillColor="#fff" 
      android:pathData="M 90 0 C 139.705627485 0 180 40.2943725152 180 90 C 180 139.705627485 139.705627485 180 90 180 C 40.2943725152 180 0 139.705627485 0 90 C 0 40.2943725152 40.2943725152 0 90 0 Z" /> 
     <path 
      android:name="Ring" 
      android:strokeColor="#0094c1" 
      android:strokeWidth="5.00000003634922" 
      android:strokeMiterLimit="10" 
      android:pathData="M 90 9 C 134.735064736 9 171 45.2649352637 171 90 C 171 134.735064736 134.735064736 171 90 171 C 45.2649352637 171 9 134.735064736 9 90 C 9 45.2649352637 45.2649352637 9 90 9 Z" /> 
    </group> 
</vector> 

やアニメーター「background_circle_animator.xml」の一つは次のとおりです。

私MainActivity.javaで最後に

<ImageView 
    android:id="@+id/feedback_ui" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:visibility="invisible"/> 

私は、次のコードを持っている:

ImageView feedbackUI = (ImageView) findViewById(R.id.feedback_ui); 
feedbackUI.setImageResource(R.drawable.animated_feedback); 

Drawable animation = feedbackUI.getDrawable(); 
if (animation instanceof Animatable) { 
    feedbackUI.setVisibility(View.VISIBLE); 
    ((Animatable) animation).start(); 
} 

以下は、私のactivity_main.xmlで

<set xmlns:android="http://schemas.android.com/apk/res/android" 
    android:ordering="sequentially" 
    android:fillAfter="true"> 

    <objectAnimator 
     android:propertyName="fillAlpha" 
     android:valueType="floatType" 
     android:valueFrom="0f" 
     android:valueTo="1f" 
     android:duration="200"/> 

    <objectAnimator 
     android:duration="700"/> 

    <objectAnimator 
     android:propertyName="fillAlpha" 
     android:valueType="floatType" 
     android:valueFrom="1f" 
     android:valueTo="0f" 
     android:duration="200"/> 

</set> 

私はこのアニメーションを再生する必要がありImageViewのを持っています私のgradle:

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 23 
    buildToolsVersion "23.0.3" 

    defaultConfig { 
     applicationId "karim.com.testinganimation" 
     minSdkVersion 15 
     targetSdkVersion 23 
     versionCode 1 
     versionName "1.0" 

     vectorDrawables.useSupportLibrary = true 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile 'com.android.support:appcompat-v7:23.4.0' 
} 

これを実行するとコードの上に青い円が描かれた白い円が表示され、フェードインしてからフェードアウトする必要があります。

このコードをAPI> 21デバイスで実行したところ、完全に実行されました。

私はAPI 15とデバイス上でそれを実行すると、私はできるだけ早く私はアニメが始まると、次のクラッシュを得る:

持つデバイス上で実行することは非常に重要であるとして、私はこの問題を解決するにはどうすればよい
D/PropertyValuesHolder(19300): Can't find native method using JNI, use reflectionjava.lang.NoSuchMethodError: no method with name='set' signature='(F)V' in class Landroid/support/graphics/drawable/VectorDrawableCompat$VFullPath; 
E/PropertyValuesHolder(19300): Couldn't find setter/getter for property null with value type float 
E/PropertyValuesHolder(19300): Couldn't find no-arg method for property null: java.lang.NoSuchMethodException: get [] 
D/AndroidRuntime(19300): Shutting down VM 
W/dalvikvm(19300): threadid=1: thread exiting with uncaught exception (group=0x40a9e1f8) 
E/AndroidRuntime(19300): FATAL EXCEPTION: main 
E/AndroidRuntime(19300): java.lang.NullPointerException 
E/AndroidRuntime(19300): at android.animation.PropertyValuesHolder.setupSetterAndGetter(PropertyValuesHolder.java:513) 
E/AndroidRuntime(19300): at android.animation.ObjectAnimator.initAnimation(ObjectAnimator.java:392) 
E/AndroidRuntime(19300): at android.animation.ValueAnimator.setCurrentPlayTime(ValueAnimator.java:544) 
E/AndroidRuntime(19300): at android.animation.ValueAnimator.start(ValueAnimator.java:934) 
E/AndroidRuntime(19300): at android.animation.ValueAnimator.start(ValueAnimator.java:957) 
E/AndroidRuntime(19300): at android.animation.ObjectAnimator.start(ObjectAnimator.java:370) 
E/AndroidRuntime(19300): at android.animation.AnimatorSet$DependencyListener.startIfReady(AnimatorSet.java:705) 
E/AndroidRuntime(19300): at android.animation.AnimatorSet$DependencyListener.onAnimationEnd(AnimatorSet.java:659) 
E/AndroidRuntime(19300): at android.animation.ValueAnimator.endAnimation(ValueAnimator.java:1040) 
E/AndroidRuntime(19300): at android.animation.ValueAnimator.access$900(ValueAnimator.java:49) 
E/AndroidRuntime(19300): at android.animation.ValueAnimator$AnimationHandler.handleMessage(ValueAnimator.java:675) 
E/AndroidRuntime(19300): at android.os.Handler.dispatchMessage(Handler.java:99) 
E/AndroidRuntime(19300): at android.os.Looper.loop(Looper.java:137) 
E/AndroidRuntime(19300): at android.app.ActivityThread.main(ActivityThread.java:4424) 
E/AndroidRuntime(19300): at java.lang.reflect.Method.invokeNative(Native Method) 
E/AndroidRuntime(19300): at java.lang.reflect.Method.invoke(Method.java:511) 
E/AndroidRuntime(19300): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
E/AndroidRuntime(19300): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
E/AndroidRuntime(19300): at dalvik.system.NativeStart.main(Native Method) 
W/ActivityManager( 164): Force finishing activity karim.com.testinganimation/.MainActivity 

をAPIレベル15

答えて

0

私はこれをテストするためのAPI 15デバイスまたはエミュレーターを持っていないが、それはあなたの真ん中objectAnimatorに満足していないのです私には思える:あなたのエラーの

<objectAnimator 
    android:duration="700"/> 

パーツ「プロパティがnullのセッター/ゲッターを見つけることができませんでした」というメッセージは、アニメーターを設定しようとしていることを示唆していますが、アニメーターがアニメートする必要があることの詳細はないので、クラッシュしています。このobjectAnimatorの目的を想定し

だけでフェードアウトする前に一時停止するアニメーションのベクトルを引き起こすことがあり、私はこのような何かを試みることをお勧め:それに感謝を解決

<objectAnimator 
    android:propertyName="fillAlpha" 
    android:valueType="floatType" 
    android:valueFrom="1f" 
    android:valueTo="1f" 
    android:duration="700"/> 
+0

を:) –