Activity从下往上弹出视差效果实现

其实这篇文章是转至简书上的大佬的,加上我自己的代码实践了下发现可行,于是就分享下

先看效果

介绍:

其实有很多方法都可以实现这种效果,popwindow,Dialog,BottomSheetDialogFragment,BottomSheetDialog等等,如果想实现用手向下滑动页面消失,可以选择BottomSheetDialogFragment,BottomSheetDialog来实现,当前登录页LoginActivity我是基于Activity实现的,那是不是我们加个进入动画不就实现了吗?答案是可以的

主要是overridependingtransition使用

说起动画,我们先看下overridependingtransition各个参数起到的作用
overridePendingTransition(int enterAnim, int exitAnim)
从参数我们直观看到enterAnim是针对将要进入的Activity,而exitAnim将要消失的Activity,如果设置0代表不启用动画

实现:

1.exit_animation.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">

    <translate
        android:fromYDelta="25"
        android:toYDelta="100%p"
        android:duration="300"
        />
</set>

 2.enter_animation.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:fromYDelta="100%p"
        android:toYDelta="0"
        android:duration="300"
        />
</set>

3.activity

    override fun initData() {
        overridePendingTransition(R.anim.enter_animation,0)
    }

    override fun finish() {
        super.finish()
        overridePendingTransition(0, R.anim.exit_animation)
    }

然后运行完会发现,进入会出现黑屏效果,退出无动画效果!!!???
其实是因为我们给当前栈顶的Activity加了动画效果,而栈底无动画效果导致的这种现象
栈底Activity不需要有视差,那我们给栈底Activity加个默认禁止动画,看看会出现什么效果

4、新建bottom_silent(禁止动画)

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <!--    栈底Activity加个默认禁止动画-->
    <translate
        android:duration="300"
        android:fromYDelta="0"
        android:toYDelta="0" />
</set>

5.activity修改

    override fun initData() {
        //参数1是进入的activity的动画,参数2是当前进入activity的下一个栈中的activity的动画
        overridePendingTransition(R.anim.enter_animation, R.anim.bottom_silent)
    }

    override fun finish() {
        super.finish()
        // 设置退出动画
        overridePendingTransition(R.anim.bottom_silent, R.anim.exit_animation)
    }

这样就行了

其中要注意的是这3个的动画时间要一致

参考文章:

Activity从下往上弹出视差效果实现 - 简书

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值