美文网首页自定义控件
【Android 开发-kotlin】转场动画Transitio

【Android 开发-kotlin】转场动画Transitio

作者: 榆野铃爱 | 来源:发表于2020-09-11 18:03 被阅读0次

    Android中的转场动画主要场景:

    1. 在两个activity之前切换,也就是界面切换
    2. 两个activity或者Fragment之间shared elements切换

    转场动画两种常用方式:

    1. overridePendingTransition
    2. ActivityOptions

    实战demo

    一、overridePendingTransition方式

    我准备好了两个activity,简单布局一下




    然后在代码中设置点击事件,创建两个资源文件





        // left_exit_anim
        android:fromXDelta="0"
        android:toXDelta="-100%"
        android:duration="500">
    
        // left_enter_anim
        android:fromXDelta="100%"
        android:toXDelta="0"
        android:duration="500">
    
                // MainActivity
                next.setOnClickListener {
                // A A从右边移动到最左边消失
                // B B从右边出现移动到最左边
                startActivity(Intent(this,DetailActivity::class.java))
                // 添加切换的动画
                overridePendingTransition(R.anim.left_enter_anim,R.anim.left_exit_anim)
            }
    
                // DetailActivity
                back.setOnClickListener {
                finish()
                overridePendingTransition(R.anim.right_enter_anim,R.anim.right_exit_anim)
            }
    

    同理,可以设置上下滚动切换、透明度切换等。

    运行效果

    • 左右滚动切换


    • 上下滚动切换


    • 透明度切换


    二、ActivityOptions方式

    我们在两个Activity界面加一个ImageView,并在两个activity的xml中设置transitionName

    然后在代码中使用

    // MainActivity
    val option=ActivityOptions.makeSceneTransitionAnimation(this,imageView,"music")
    startActivity(Intent(this,DetailActivity::class.java),option.toBundle())
    
     // DetailActivity
     back.setOnClickListener {
          finishAfterTransition()
     }      
    

    运行效果

    遇到的问题:我拖动一个ImageView到界面,xml写的是tools:src="@drawable/music",这样图片并不会显示,要改成android:src="@drawable/music"才能正常显示,又是一个百度不到答案的问题。。。

    多个option切换

    再添加一张图片,设置transitionName

    // MainActivity
    val options=ActivityOptions.makeSceneTransitionAnimation(this,Pair.create(imageView,"music"), Pair.create(imageView2,"write"))
    startActivity(Intent(this,DetailActivity::class.java),options.toBundle())
    

    运行效果

    相关文章

      网友评论

        本文标题:【Android 开发-kotlin】转场动画Transitio

        本文链接:https://www.haomeiwen.com/subject/rxavektx.html