Fragment 的过场动画

  • Android,Fragment,动画
  • 2018.08.03

文章迁移至:https://binkery.com/archives/2018.08.03-Android-Fragmet过场动画.html

在 Android 开发中,有些应用对页面的过场动画要求比较高,他们中期望给用户提供一个良好的用户体验。适当的过场动画可以减少用户在页面加载时期等待的焦虑,因为让他们看一个动画,总比让他们盯着一个菊花转圈,或者一个白屏,黑屏要强很多。

在 Android 开发中,有些应用对页面的过场动画要求比较高,他们中期望给用户提供一个良好的用户体验。适当的过场动画可以减少用户在页面加载时期等待的焦虑,因为让他们看一个动画,总比让他们盯着一个菊花转圈,或者一个白屏,黑屏要强很多。

Android 也为开发者提供了很多动画的 API 和适配。只是平时工作中并不是所有开发者都会去研究得很细致。我是这么认为的,如果你所开发的项目中,并没有那么高的需求的话,你确实不需要去了解那么多,因为动画的实现大部分还是靠 API 的,你只需要去好好了解了解 API 已经官方文档,那么你也可以在短时间内掌握好动画的制作和实现。当然,首先你还是需要有一些基础知识的储备。不然当产品经理拿着效果过来找你的时候,你直接说不知道,做不了,然后产品经理拿着别人的作品再次过来的时候,那就打脸了。

首先一个 Activity 里 Fragment 的切换的实现:

supportFragmentManager.beginTransaction()
    .replace(R.id.home_content, fragment)
    .addToBackStack(tag)
    .commit()

然后我们需要为两个 Fragment 定制共享的元素

supportFragmentManager.beginTransaction()
    .replace(R.id.home_content, fragment)
    .addToBackStack(tag)
    .apply {
        for (view in sharedElementViews) {
            addSharedElement(view)
        }
    }
.commit()

当从 A Fragment 跳转到 B Fragment 的时候,这些 View 的位置会变化,大小也会变化。

class GridFragment : Fragment() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        sharedElementEnterTransition = ChangeBounds()
    }
}

更加详细的介绍,https://medium.com/google-developers/fragment-transitions-ea2726c3f36f

相关文章

- EOF -

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动。
转载请注明:文章转载自 Binkery 技术博客 [https://binkery.com]
本文标题: Fragment 的过场动画
本文地址: https://binkery.com/archives/102002.html