TransformationLayout Versions Save

🌠 Transform between two Views, Activities, and Fragments, or a View to a Fragment with container transform animations for Android.

1.1.3

7 months ago

What's Changed

Full Changelog: https://github.com/skydoves/TransformationLayout/compare/1.1.2...1.1.3

1.1.2

1 year ago

What's Changed

Full Changelog: https://github.com/skydoves/TransformationLayout/compare/1.1.1...1.1.2

1.1.1

2 years ago

🎉 Released a new stable 1.1.1! 🎉

What's new?

  • Migrated material version to 1.5.0-alpha05.
  • Removed buildConfig option on the transformationlayout module.

1.1.0

2 years ago

🎉 Released a new version 1.1.0! 🎉

What's New?

  • Migrated to material version 1.4.0 stable.

1.0.9

2 years ago

🎉 Released a new version 1.0.9! 🎉

What's new?

  • Updated material version to 1.4.0-beta01.
  • Concealed internal functionalities for Java APIs.

1.0.8

3 years ago

🎉 Released a new version 1.0.8!

What's New?

  • Updated to use material 1.4.0-alpha.

1.0.7

3 years ago

🎉 Released a new version 1.0.7! 🎉

What's new?

  • Updated material version to 1.3.0-beta01.
  • Migrated to kotlin-parcelize plugin internally.
  • Updated kotlin version to 1.4.20 internally.

1.0.6

3 years ago

🎉 Released a new version 1.0.6! 🎉

What's New?

  • Added extensions related functionalities to 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)
  • Added onTransformationEndContainerApplyParams functionality in TransformationCompat. After starts a new activity by using startActivity or startActivityForResult in TransformationCompat, apply the TransformationLayout.Params on an Activity.

Activiy A

TransformationCompat.startActivity(transformationLayout, intent)

Activity B

TransformationCompat,onTransformationEndContainerApplyParams(activity)

onTransformationEndContainerApplyParams() // kotlin extension
  • Used compile SDK version 30 and kotlin version 1.4.0 stable
  • Used single abstract method conversions to listener interfaces.
  • Used JvmSynthetic for hiding kotlin lambda functions in Java for using without adding a kotlin dependency.

1.0.5

3 years ago

🎉 Released a new version 1.0.5! 🎉

What's New?

  • Migrated Google-Material version to 1.3.0-alpha02.
  • Added allContainerColors, startElevation, endElevation, elevationShadowEnabled, holdAtEndEnabled to the params, and attributes.

1.0.4

4 years ago

Released version 1.0.4.

What's the difference?

We can transform a view or fragment into a fragment.

How to use?

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
}