Android Studio 设置丝滑页面转场效果

在做课设的时候,发觉页面跳转时总是一个效果,过于单调,于是想做一个不一样的“丝滑”跳转,那么,该如何实现呢?

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中设置转场动画将其跳转回去呢?

这就留给大家去思考啦。。。 

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值