Android 动画详解(二)之animation组合使用
程序员文章站
2022-05-03 10:35:39
...
“基本功不扎实,功力永远无法登峰造极”
本次上次介绍的是animation的基本使用,大家可以先看看Android 动画详解(一)之animation,经过上一篇的沉淀,相信大家已经对Android的animation的动画已经有一定的积累,本篇进说说animation相对高级一些的使用。
首先是动画的连续播放反两种方式:
1、Java代码监听:
// 先加载第一个动画的实例
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);
老规矩,有Java的方式,当然少不了xml的方式
<?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"/>
<translate
android:duration="1000"
android:fromXDelta="0"
android:fromYDelta="0"
android:toXDelta="100"
android:toYDelta="100"
android:startOffset="3000"
/>
</set>
有没有发现,在中有startOffset属性,就是说,延时多少毫秒播放,在我们的xml文件中,startOffset的值于标签中的duration属性的值相同,也就是说,translate动画在alpha动画结束之后所显示。
在xml中设置以后,只要在Java文件中调用一下就好,
Animation continueAnim = AnimationUtils.loadAnimation(getActivity(),R.anim.continue_animation);
imgView.startAnimation(continueAnim);
当然也可以同时播放,那就简单多了,监听延时啥的都去掉,你试试。
再说说动画的重复播放:
final Animation translateAnimation=new TranslateAnimation(0,200,0,200);
translateAnimation.setDuration(3000); //设置动画持续时间
translateAnimation.setRepeatCount(2); //设置重复次数
translateAnimation.setRepeatMode(Animation.RESTART); //重新从头执行
//translateAnimation.setRepeatMode(Animation.REVERSE); //反方向执行
image.setAnimation(translateAnimation); //设置动画效果
translateAnimation.startNow();
在Android 的Java代码中,通过setRepeatCount属性设置动画重复多少次。
xml方式:
<translate
android:duration="1000"
android:fromXDelta="0"
android:fromYDelta="0"
android:toXDelta="100"
android:toYDelta="100"
android:repeatCount="5"
android:repeatMode="restart"
/>
一样,也是repeatCount属性来设置。
有的app的Activity也是带有动画效果的,来看看简单的实现
Intent intent = new Intent(getActivity(),SecondActivity.class);
startActivity(intent);
//通过overridePendingTransition方法来设置Activity进入和退出的动画,
//第一个参数是要跳转的Activity进入是的动画效果
//第二个参数是当前的Activity退出的动画效果
overridePendingTransition(R.anim.fade_in,R.anim.hold_out);
就是这么简单。
finish();
当前Activity在finish的时候一样可以设置。
overridePendingTransition(R.anim.fade_in,R.anim.hold_out);
ok,本篇先到这里哦。关于动画的知识还是有不少的,下一篇还是动画相关。
推荐阅读
-
Android基础夯实--重温动画(二)之Frame Animation
-
Android Animation动画详解(二): 组合动画特效_html/css_WEB-ITnose
-
详解Android动画之Tween Animation_html/css_WEB-ITnose
-
详解Android动画之Tween Animation_html/css_WEB-ITnose
-
Android 属性动画(Property Animation) 使用详解
-
Android Animation动画详解(二): 组合动画特效
-
Android 动画详解(二)之animation组合使用
-
Android 视图动画(View Animation) 使用详解
-
Android Animation动画详解(二): 组合动画特效_html/css_WEB-ITnose
-
Android基础夯实--重温动画(二)之Frame Animation