在做课设的时候,发觉页面跳转时总是一个效果,过于单调,于是想做一个不一样的“丝滑”跳转,那么,该如何实现呢?
1、首先在res下新建一个anim文件夹,用来存放过度动画
2、新建两个.xml文件:slide_in_right.xml和slide_out_left.xml,分别表示向右切入和向左切出的动画效果
slide_in_right.xml(进入动画,从右滑入):
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:fromXDelta="100%"
android:toXDelta="0%"
android:duration="300" />
<alpha
android:fromAlpha="0.0"
android:toAlpha="1.0"
android:duration="300" />
</set>
slide_out_left.xml(切出动画,从左滑出):
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:fromXDelta="0%"
android:toXDelta="-100%"
android:duration="300" />
<alpha
android:fromAlpha="1.0"
android:toAlpha="0.0"
android:duration="300" />
</set>
现在对上述代码做一个简单的解释:
-
<set>
标签:这是一个动画集,可以包含多个动画效果。在这个例子中,它包含了平移 (<translate>
) 和透明度变化 (<alpha>
) 两个动画。 -
<translate>
标签:这个标签用于定义视图的平移动画。fromXDelta
属性定义了动画开始时的水平位置,toXDelta
定义了动画结束时的水平位置。在这个例子中,视图从屏幕右侧外部开始,向左滑动到屏幕左侧边缘。 -
<alpha>
标签:这个标签用于定义视图的透明度变化动画。fromAlpha
属性是动画开始时的透明度(0.0 表示完全透明),toAlpha
是动画结束时的透明度(1.0 表示完全不透明)。这里,视图在动画开始时是透明的,然后逐渐变为不透明,与平移动画同步进行。 -
android:duration
属性:这个属性定义了动画的持续时间,单位是毫秒。在这个例子中,平移和透明度变化的动画都设置为300毫秒,以确保它们能够同时开始和结束,从而创建出丝滑且协调的动画效果。
3、在你的Activity或Fragment中设置动画
这里默认你已经掌握了如何实现fragment和activity间的跳转,如果不会可以参考我之前的文章:
https://blog.csdn.net/Kevin__666/article/details/138684412
这里使用overridePendingTransition()
方法来设置这些动画
注意:overridePendingTransition()
方法必须在startActivity()
或finish()
之后立即调用,因为它会改变上一个Activity的退出动画和下一个Activity的进入动画。 (还有如果在fragment中调用记得加getActivity()!!!)
在这个例子中,我们为SearchActivity
设置了从右滑入的进入动画,并为当前Activity下的Fragmenr
设置了从左滑出的退出动画。这样,当用户点击控件
并跳转到下一界面时,就会有一个丝滑的过渡效果:
那么举一反三,如何在 SearchActivity中设置转场动画将其跳转回去呢?
这就留给大家去思考啦。。。