web-dev-qa-db-fra.com

Affichage de l'activité avec une animation personnalisée

J'ai un widget qui démarre une activité quand on clique dessus. J'aimerais avoir une sorte d'animation sophistiquée pour afficher cette activité, plutôt que le défilement standard à partir d'Android. J'ai du mal à le configurer, cependant. Voici ce que j'ai:

slide_top_to_bottom.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:Android="http://schemas.Android.com/apk/res/Android" Android:interpolator="@Android:anim/accelerate_interpolator">
    <translate Android:fromYDelta="-100%" Android:toXDelta="0" Android:duration="100" />
    <alpha Android:fromAlpha="0.0" Android:toAlpha="1.0" Android:duration="50" />
</set>

... qui est référencé dans anim.xml

<?xml version="1.0" encoding="utf-8"?>
<layoutAnimation xmlns:Android="http://schemas.Android.com/apk/res/Android"
        Android:delay="50%"
        Android:animation="@anim/slide_top_to_bottom" />

Mais alors d'où dois-je y faire référence? J'ai essayé à la fois l'élément de base de l'activité dans laquelle je veux glisser et l'entrée de l'activité dans le manifeste, les deux fois avec

Android:layoutAnimation="@+anim/anim"

Je fais peut-être tout cela mal. Toute aide est très appréciée!

30
blork

Vous pouvez créer un thème personnalisé avec une référence à votre propre animation et l'appliquer à votre activité dans votre fichier manifeste. J'ai réussi à appliquer une animation personnalisée pour une fenêtre flottante à l'aide de la définition de style suivante. Vous pourriez être en mesure de faire quelque chose de similaire si vous définissez le parent de votre style sur "@Android: style/Animation.Activity"

Consultez les fichiers suivants pour plus de détails sur ce que vous pouvez remplacer.

https://github.com/Android/platform_frameworks_base/blob/master/core/res/res/values/styles.xmlhttps://github.com/Android/platform_frameworks_base/ blob/master/core/res/res/values ​​/ themes.xml

Voici une partie de mes styles.xml et manifest.xml

styles.xml

<style name="MyTheme" parent="@Android:style/Theme.Panel">
    <item name="Android:windowNoTitle">true</item>
    <item name="Android:backgroundDimEnabled">true</item>
    <item name="Android:windowAnimationStyle">@style/MyAnimation.Window</item>
</style>

<!-- Animations --> 
<style name="MyAnimation" /> 

<!-- Animations for a non-full-screen window or activity. --> 
<style name="MyAnimation.Window" parent="@Android:style/Animation.Dialog"> 
    <item name="Android:windowEnterAnimation">@anim/grow_from_middle</item>
    <item name="Android:windowExitAnimation">@anim/shrink_to_middle</item>
</style> 

Manifest.xml

    <activity
        Android:name="com.me.activity.MyActivity"
        Android:label="@string/display_name"
        Android:theme="@style/MyTheme">
    </activity>
52
Akos Cz
startActivity(intent);
overridePendingTransition(R.anim.slide_top_to_bottom, R.anim.hold);

Vérifiez ce lien: méthode overridePendingTransition

Éditer:

Pour réaliser l'animation des vues. Vous avez utilisé la méthode startAnimation comme ci-dessous

view.startAnimation(AnimationUtils.loadAnimation(
                 WidgetActivity.this,R.anim.slide_top_to_bottom));

Vérifiez cela lien :

6
Praveen