首先在res目录下新建一个anim,然后准备两个动画xml,一个淡出、一个淡入,为了大家更好的Ctrlcv就把涉及代码贴出来了
<alpha
//这个是淡出动画
android:duration="1000"
android:fromAlpha="1.0"
android:toAlpha="0.0"
android:interpolator="@android:anim/linear_interpolator"/>
<alpha
//这个是淡入动画
android:duration="1000"
android:fromAlpha="0.0"
android:toAlpha="1.0"
android:interpolator="@android:anim/linear_interpolator"/>
两个动画都采用了线性匀速变化,这样看起来可以更平滑一些,其他的变化属性可以看下面代码选择
android:interpolator="@android:anim/accelerate_interpolator" 设置动画为加速动画(动画播放中越来越快)
android:interpolator="@android:anim/decelerate_interpolator" 设置动画为减速动画(动画播放中越来越慢)
android:interpolator="@android:anim/accelerate_decelerate_interpolator" 设置动画为先加速在减速(开始速度最快 逐渐减慢)
android:interpolator="@android:anim/anticipate_interpolator" 先反向执行一段,然后再加速反向回来(相当于我们弹簧,先反向压缩一小段,然后在加速弹出)
android:interpolator="@android:anim/anticipate_overshoot_interpolator" 同上先反向一段,然后加速反向回来,执行完毕自带回弹效果(更形象的弹簧效果)
android:interpolator="@android:anim/bounce_interpolator" 执行完毕之后会回弹跳跃几段(相当于我们高空掉下一颗皮球,到地面是会跳动几下)
android:interpolator="@android:anim/cycle_interpolator" 循环,动画循环一定次数,值的改变为一正弦函数:Math.sin(2* mCycles* Math.PI* input)
android:interpolator="@android:anim/linear_interpolator" 线性均匀改变
android:interpolator="@android:anim/overshoot_interpolator" 加速执行,结束之后回弹
然后我们去styles里面自定义一个自己的主题
<style name="MyTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:windowAnimationStyle">@style/fade</item>
</style>
<style name="fade" parent="@android:style/Animation.Activity">
<item name="android:activityOpenEnterAnimation">@anim/fade_in</item>
<item name="android:activityOpenExitAnimation">@anim/fade_out</item>
<item name="android:activityCloseEnterAnimation">@anim/fade_in</item>
<item name="android:activityCloseExitAnimation">@anim/fade_out</item>
</style>
activityOpenEnterAnimation-->当打开一个新活动时,动画在下一个活动(正在进入的)上运行,我们设置淡入anim
activityOpenExitAnimation-->当打开一个新活动时,动画在下一个活动(正在退出的)上运行,我们设置淡出anim
为了看着更平滑些,我们把关闭时的也设置一下
·
然后再去mainfest里面配置一下,假如涉及到a和b的淡入淡出就在这两个activity后面加入android:theme="@style/MyTheme"。。
<activity android:name=".SplashActivity"
android:theme="@style/MyTheme"/>
<activity android:name=".MainActivity"
android:theme="@style/MyTheme"/>
实现了淡入淡出之后,还需要把淡入activity的背景进行一个缩小动画,这个很简单
<scale
android:duration="3000"
android:fromXScale="1.3"
android:fromYScale="1.3"
android:pivotY="50%"
android:pivotX="50%"
android:toXScale="1.0"
android:toYScale="1.0"/>
然后在淡入activity的onCreate方法为设置了背景图片的控件设置一个动画
Animation main_bg_anim=AnimationUtils.loadAnimation(this,R.anim.main_bg_anim);
mRootLayout.setAnimation(main_bg_anim);
这样就实现了必应的开屏效果了