2016-05-20 16 views
16

Sono una specie di nuovo per Android. Devo personalizzare le animazioni nella mia app quando si aprono le attività.Le animazioni personalizzate per le attività di avvio su Android non funzionano come previsto

ho usato seguente codice nella mia applicazione styles.xml

<style name="YourAnimation.Activity" parent="@android:style/Animation.Activity"> 
    <item name="android:windowEnterAnimation">@anim/fade_in</item> 
    <item name="android:windowExitAnimation">@anim/fade_out</item> 
</style> 

poi applicato lo stile ad un tema, nello stesso file.

<style name="YourTheme" parent="android:Theme.Translucent"> 
    <item name="android:windowAnimationStyle">@style/CustomAnimationActivity</item> 
</style> 

poi aggiunti il ​​tema nel mio AndroidManifest.xml

<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/YourTheme" > 
</application> 

Ma, quando sono in esecuzione questo, si verifica errore seguente.

errors

Penso di aver bisogno di aggiungere l'animazione ml file da qualche parte nel mio progetto. ma non ho idea di come farlo. Qualcuno per favore aiutami con questo.

Grazie in anticipo. :)

operativa -Editazione-

Ecco la fade_in.xml

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android" 
    android:fillAfter="true"> 
    <alpha 
     android:duration="1000" 
     android:fromAlpha="0.0" 
     android:interpolator="@android:anim/accelerate_interpolator" 
     android:toAlpha="1.0"/> 
</set> 

Ecco la fade_out.xml

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android" 
    android:fillAfter="true"> 
    <alpha 
     android:duration="1000" 
     android:fromAlpha="1.0" 
     android:interpolator="@android:anim/accelerate_interpolator" 
     android:toAlpha="0.0"/> 
</set> 

registro dei crash

05-20 15:36:47.216 3557-3557/com.myayubo E/AndroidRuntime﹕ FATAL EXCEPTION: main 
    Process: com.myayubo, PID: 3557 
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.myayubo/com.myayubo.PreSplash}: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity. 
      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2338) 
      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2390) 
      at android.app.ActivityThread.access$800(ActivityThread.java:151) 
      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1321) 
      at android.os.Handler.dispatchMessage(Handler.java:110) 
      at android.os.Looper.loop(Looper.java:193) 
      at android.app.ActivityThread.main(ActivityThread.java:5299) 
      at java.lang.reflect.Method.invokeNative(Native Method) 
      at java.lang.reflect.Method.invoke(Method.java:515) 
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:829) 
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:645) 
      at dalvik.system.NativeStart.main(Native Method) 
    Caused by: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity. 
      at android.support.v7.app.AppCompatDelegateImplBase.onCreate(AppCompatDelegateImplBase.java:122) 
      at android.support.v7.app.AppCompatDelegateImplV7.onCreate(AppCompatDelegateImplV7.java:146) 
      at android.support.v7.app.AppCompatActivity.onCreate(AppCompatActivity.java:59) 
      at com.myayubo.PreSplash.onCreate(PreSplash.java:23) 
      at android.app.Activity.performCreate(Activity.java:5264) 
      at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1088) 
      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2302) 
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2390) 
            at android.app.ActivityThread.access$800(ActivityThread.java:151) 
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1321) 
            at android.os.Handler.dispatchMessage(Handler.java:110) 
            at android.os.Looper.loop(Looper.java:193) 
            at android.app.ActivityThread.main(ActivityThread.java:5299) 
            at java.lang.reflect.Method.invokeNative(Native Method) 
            at java.lang.reflect.Method.invoke(Method.java:515) 
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:829) 
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:645) 
            at dalvik.system.NativeStart.main(Native Method) 
+0

Fare riferimento qui per informazioni sull'animazione http://coderzpassion.com/android-working- animazione/ –

+0

Grazie. Ci proverò. :) –

risposta

7

In Android Studio:

  • fare clic con il pulsante destro del mouse sulla cartella res.
  • Nuovo> Directory delle risorse Android.
  • Per Tipo di risorsa: selezionare anim.
  • Premere OK, e si dispone della cartella di animazione.

È quindi possibile creare/includere gli articoli per il proprio CustomAnimationActivity come nel proprio styles.

Edit seguente registro incidente

java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.` 

Basta cambiare il tuo styles.xml di estendere un AppCompat tema per esempio

<style name="YourTheme" parent="android:Theme.AppCompat.Light"> 
     <item name="android:windowAnimationStyle">@style/CustomAnimationActivity</item> 
</style> 

Inoltre, il Activity dovrebbe probabilmente estendere AppCompatActivity (o Activity).

+0

ho aggiunto la cartella anim e fade_in e fade_out a quella cartella e ora l'app si blocca. Si prega di vedere la domanda modificata. –

+0

Puoi pubblicare il tuo registro degli arresti anomali? –

+0

Registro di crash aggiunto. Si prega di avere un llok. :) –

2

tenta di aggiungere sotto file xml nella cartella anim

fadein.xml

<?xml version="1.0" encoding="utf-8"?> 
<alpha xmlns:android="http://schemas.android.com/apk/res/android" 
    android:interpolator="@android:anim/accelerate_interpolator" 
    android:fromAlpha="0.0" 
    android:toAlpha="1.0" 
    android:duration="700" /> 

fadeout.xml

<?xml version="1.0" encoding="utf-8"?> 
<alpha xmlns:android="http://schemas.android.com/apk/res/android" 
    android:interpolator="@android:anim/decelerate_interpolator" 
    android:zAdjustment="top" 
    android:fromAlpha="1.0" 
    android:toAlpha="0.0" 
    android:duration="700" /> 

Dopo aver fatto questo basta aggiungere sotto il codice nella vostra attività spruzzi (nota. inserire questo codice dopo aver terminato il vostro intento)

overridePendingTransition(R.anim.fadein, R.anim.fadeout);