Android Fragment shared element transitions動畫效果

1. 範例程式

Fragment參考以下程式碼

//Fragment1
override fun onViewCreated(
    view: View, 
    savedInstanceState: Bundle?
) {
    super.onViewCreated(view, savedInstanceState)
    ViewCompat.setTransitionName(
        binding.itemImage, 
        "itemImage"
    )
    binding.itemImage.setOnClickListener {
        activity?.supportFragmentManager?.commit {
            addSharedElement(
                binding.itemImage, 
                binding.itemImage.transitionName
            )
            replace<TestFragment2>(R.id.fragment_container_view)
            addToBackStack(null)
        }
    }
}



//Fragment2
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    sharedElementEnterTransition = TransitionInflater
        .from(requireContext())
        .inflateTransition(android.R.transition.move)
}

override fun onViewCreated(
    view: View, 
    savedInstanceState: Bundle?
) {
    super.onViewCreated(view, savedInstanceState)
    ViewCompat.setTransitionName(
        binding.itemImage2,
        "itemImage"
    )
}

Activity參考以下程式碼

//在onCreate內加入下列程式碼
val fragment1 = TestFragment1()
supportFragmentManager.commit {
    setReorderingAllowed(true)
    add(
        R.id.fragment_container_view,
        fragment1
    )
}
binding.backBtn.setOnClickListener {
    supportFragmentManager.popBackStack()
}

2. 功能介紹

在兩個Fragment中設定相同的TransitionName

設定方式可以像上面範例一樣

在onViewCreated設定ViewCompat.setTransitionName

也可以在xml內設定android:transitionName="itemImage"

兩個Fragment,相同transitionName,就可以達到上面影片的效果

以上內容參考Android 官網


相關文章

Android Fragment建立、更換、尋找、Back StackAndroid Fragment add與replace分析
1. 使用XML在Activity與Fragment連接
2. 使用程式方式在Activity與Fragment連接
3. 將已新增的Fragment更換
4. 尋找已建立的Fragment
5. Fragment對應的FragmentManager
6. Back Stack使用
Android Fragment 自定義constructorAndroid Fragment show、hide、attach、detach用法
1. 重寫FragmentFactory
2. 建立Fragment
3. 在Activity中使用
1. 範例程式
2. Fragment show與hide是什麼呢?
3. Fragment attach與detach是什麼呢?
Android Fragment Transitions動畫效果Android Fragment lifecycle
1. 範例程式
2. 功能介紹
1. 簡略
2. 測試搭配setMaxLifecycle的生命週期
Android Fragment通訊
1. 簡要
2. 使用View Model共享數據
3. 使用 Fragment Result API獲取結果

訂閱Codeilin的旅程,若有最新消息會通知。

廣告

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s

WordPress.com.

向上 ↑

%d 位部落客按了讚: