🌠Transform between two Views, Activities, and Fragments, or a View to a Fragment with container transform animations for Android.
Full Changelog: https://github.com/skydoves/TransformationLayout/compare/1.1.2...1.1.3
Full Changelog: https://github.com/skydoves/TransformationLayout/compare/1.1.1...1.1.2
🎉 Released a new version 1.0.6
! 🎉
TransformationCompat
for supporting Java.TransformationCompat.startActivity(transformationLayout, intent)
TransformationCompat.startActivityForResult(transformationLayout, intent)
TransformationCompat.onTransformationStartContainer(activity)
TransformationCompat.onTransformationEndContainer(activity, transformationParams)
TransformationCompat.onTransformationStartContainer(fragment)
TransformationCompat.onTransformationEndContainer(fragment, transformationParams)
TransformationCompat.addTransformation(fragmentTransaction, transformationLayout, transitionName)
onTransformationEndContainerApplyParams
functionality in TransformationCompat
.
After starts a new activity by using startActivity
or startActivityForResult
in TransformationCompat
, apply the TransformationLayout.Params
on an Activity.TransformationCompat.startActivity(transformationLayout, intent)
TransformationCompat,onTransformationEndContainerApplyParams(activity)
onTransformationEndContainerApplyParams() // kotlin extension
JvmSynthetic
for hiding kotlin lambda functions in Java for using without adding a kotlin dependency.Released version 1.0.4
.
We can transform a view or fragment into a fragment.
Here is some example of transformation RecyclerView item in Fragment A into Fragment B.
FragmentA
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// [Step1]: apply onTransformationStartContainer.
onTransformationStartContainer()
}
/** This function will be called from the [PosterSingleAdapter.PosterDelegate]'s onBindViewHolder. */
override fun onItemClick(poster: Poster, itemView: TransformationLayout) {
val fragment = MainSingleDetailFragment()
// [Step2]: getBundle from the TransformationLayout.
val bundle = itemView.getBundle(MainSingleDetailFragment.paramsKey)
bundle.putParcelable(MainSingleDetailFragment.posterKey, poster)
fragment.arguments = bundle
requireFragmentManager()
.beginTransaction()
// [Step3]: addTransformation using the TransformationLayout.
.addTransformation(itemView)
.replace(R.id.main_container, fragment, MainSingleDetailFragment.TAG)
.addToBackStack(MainSingleDetailFragment.TAG)
.commit()
}
RecyclerView.Adapter
transformationLayout.transitionName = item.name
If you want to transform view (not a recyclerView's item), set transiton name in on onViewCreated
.
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
transformationLayout.transitionName = item.name
}
FragmentB
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// [Step1]: apply onTransformationEndContainer using TransformationLayout.Params.
val params = arguments?.getParcelable<TransformationLayout.Params>(paramsKey)
onTransformationEndContainer(params)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
// [Step2]: sets a transition name to the target view.
detail_container.transitionName = poster.name
}