Android Animation动画详解(二): 组合动画特效_html/css_WEB-ITnose
前言
上一篇博客Android Animation动画详解(一): 补间动画 我已经为大家介绍了Android补间动画的四种形式,相信读过该博客的兄弟们一起都了解了。如果你还不了解,那点链接过去研读一番,然后再过来跟着我一起学习如何把简单的动画效果组合在一起,做出比较酷炫的动画特效吧。
如题,大家想想,如果一个页面上包含了许多动画,这些动画要求按顺序播放,即一个动画播放完成后,继续播放另一个动画,使得这些动画具有连贯性。那该如何实现呢? 有开发经验或者是逻辑思维的人肯定会想,对动画进行监听啊,如果这个动画播放完了,再去播放另一个动画不就好了。
Congratulations, 你和我想的是一样一样的。
我们看下通过这种动画播放监听如何去做:
private void continueAnim(){ // 先加载第一个动画 Animation translate = AnimationUtils.loadAnimation(getActivity(), R.anim.translate_animation); // 在加载第二个动画 final Animation scale = AnimationUtils.loadAnimation(getActivity(), R.anim.scale_animation); // 接下来,我们队第一个动画进行监听,当它播放完成后,我们播放第二个动画 translate.setAnimationListener(new Animation.AnimationListener() { @Override public void onAnimationStart(Animation animation) { } @Override public void onAnimationEnd(Animation animation) { imgView.startAnimation(scale); } @Override public void onAnimationRepeat(Animation animation) { } }); imgView.startAnimation(translate); }
注释我已经写得挺详细了,可以说,这种方法so easy,没啥可说的。
除了上面介绍的使用监听器监听动画播放结束之外,还有一个更easy方法,也是我们优先推荐使用的,那就是Animation Set。
这里,我们要引入一个动画的属性:startOffset。 如何去使用呢?看下定义动画的代码:
<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android" android:fillafter="true" android:fillenabled="true"> <alpha android:fromalpha="0" android:toalpha="1" android:duration="3000"></alpha> <translate android:duration="1000" android:fromxdelta="0" android:fromydelta="0" android:toxdelta="100" android:toydelta="100" android:startoffset="3000"></translate></set>
仔细看下translate定义的动画,它其中就有一个属性startOffset,这个属性的值,其实就是alpha动画的duration的值,他的意思是,延迟三秒后播放,其实也就是第一个alpha动画播放完成后再播放。
Animation continueAnim = AnimationUtils.loadAnimation(getActivity(), R.anim.continue_animation);imgView.startAnimation(continueAnim);
好啦,写到这,让我们看下运行的效果吧:
重播动画,故名思议,就是动画重复播放。大家看下上面那个gif的动态图,其实就是重复播放动画。那Android如何重复播放动画呢?
其实very easy,因为Android本身为定义动画提供了两个属性repeatCount和repeatMode,只要为你的动画设置上这两个属性,那就ok了!
为了方便记忆,让我们稍微看下代码吧:
<translate android:duration="1000" android:fromxdelta="0" android:fromydelta="0" android:toxdelta="100" android:toydelta="100" android:repeatcount="5" android:repeatmode="restart"></translate>
这里我们指定了 repeatCount为5,则动画要播放5次,repeatMode为“restart”,则动画每次都是重复播放。repeatMode还有个取值“reverse”,这是指让动画倒叙播放。 看下效果。
说道Activity切换动画,我想大家肯定都不陌生,比如你玩淘宝、美团啥的,你会发现它们的页面切换都是从右向左滑动进入的,这其实就是Activity切换动画的应用。或许大家初始会觉得挺难,但我要告诉你的是,其实这玩意真简单,如果你已经会了如何定义动画(特指补间动画),那么你只要再理解下一个方法??overridePendingTransition即可。
先让我们一起看下这个方法的定义:
/** * @param enterAnim A resource ID of the animation resource to use for * the incoming activity. Use 0 for no animation. * @param exitAnim A resource ID of the animation resource to use for * the outgoing activity. Use 0 for no animation. */ public void overridePendingTransition(int enterAnim, int exitAnim) { try { ActivityManagerNative.getDefault().overridePendingTransition( mToken, getPackageName(), enterAnim, exitAnim); } catch (RemoteException e) { } }
接下来让我们定义两个动画资源:fade_in.xml和hold_out.xml
<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_interpolator"> <alpha android:fromalpha="0.2" android:toalpha="1.0" android:duration="1000"></alpha></set>
<?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:fromxdelta="0%p" android:toxdelta="100%p" android:duration="1000"></translate></set>
定义动画结束后,那我们只需要在启动新Activity或者结束Activity时,复写 overridePendingTransition方法,并传入动画就好啦:
Intent intent = new Intent(getActivity(),SecondActivity.class);startActivity(intent);overridePendingTransition(R.anim.fade_in,R.anim.hold_out);
或者是:
public void back(View view){ finish(); overridePendingTransition(R.anim.fade_in,R.anim.hold_out);}
有没有被惊叹道,原来就这么easy啊! 赶快自己也动手试下吧。
其实Android简单的动画就这么些个,复杂的动画无非也是把这些动画整合在一起使用而已,大家遇到复杂的动画不要太慌,只要分析清楚它的实现原理,一步步的来解锁,都是可以搞定的啦。
之后,我会再写两篇博客,介绍我在开发过程中使用过的两次动画,当然,并不是很难的那种,只是分享经验而已,敬请期待,欢迎指点。
源码下载地址(免费):http://download.csdn.net/detail/zuiwuyuan/9047739
版权声明:本文为博主原创文章,未经博主允许不得转载。

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

L'article traite du HTML & lt; Progress & GT; élément, son but, son style et ses différences par rapport au & lt; mètre & gt; élément. L'objectif principal est de l'utiliser & lt; Progress & gt; pour l'achèvement des tâches et & lt; mètre & gt; pour stati

L'article traite du HTML & lt; Datalist & GT; élément, qui améliore les formulaires en fournissant des suggestions de saisie semi-automatique, en améliorant l'expérience utilisateur et en réduisant les erreurs. COMMANDE COMPRES: 159

L'article traite du HTML & lt; mètre & gt; élément, utilisé pour afficher des valeurs scalaires ou fractionnaires dans une plage, et ses applications courantes dans le développement Web. Il différencie & lt; mètre & gt; De & lt; Progress & gt; et ex

L'article examine les meilleures pratiques pour assurer la compatibilité des navigateurs de HTML5, en se concentrant sur la détection des fonctionnalités, l'amélioration progressive et les méthodes de test.

L'article discute de l'utilisation des attributs de validation de formulaire HTML5 comme les limites requises, motifs, min, max et longueurs pour valider la saisie de l'utilisateur directement dans le navigateur.

L'article traite de la balise Meta de la fenêtre, essentielle pour la conception Web réactive sur les appareils mobiles. Il explique comment une utilisation appropriée garantit une mise à l'échelle optimale du contenu et une interaction utilisateur, tandis que la mauvaise utilisation peut entraîner des problèmes de conception et d'accessibilité.

L'article traite du & lt; iframe & gt; L'objectif de Tag dans l'intégration du contenu externe dans les pages Web, ses utilisations courantes, ses risques de sécurité et ses alternatives telles que les balises d'objet et les API.

GiteEpages STATIQUE Le déploiement du site Web a échoué: 404 Dépannage des erreurs et résolution lors de l'utilisation de Gitee ...
