Releases: skydoves/TransformationLayout
1.0.4
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
}
1.0.3
Released version 1.0.3
.
What's the difference?
Added TransformationCompat
, TransformationActivity
and TransformationAppCompatActivity
.
We can transform into an Activity easier using them.
How to use?
onTransformationStartContainer
Here is the same as before.
We should add onTransformationStartContainer()
to the Activity that has the floating action button.
override fun onCreate(savedInstanceState: Bundle?) {
onTransformationStartContainer() // should be called before super.onCreate().
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
TransformationAppCompatActivity
Extends TransformationAppCompatActivity
or TransformationActivity
to your activity that will be transformed.
class DetailActivity : TransformationAppCompatActivity()
Here is the Java way.
public class DetailActivity extends TransformationAppCompatActivity
TransformationCompat
And start the DetailActivity
using the TransformationCompat.startActivity
method.
val intent = Intent(context, DetailActivity::class.java)
TransformationCompat.startActivity(transformationLayout, intent)
Here is the Java way.
Intent intent = new Intent(context, DetailActivity.class);
TransformationCompat.INSTANCE.startActivity(transformationLayout, intent);
1.0.2
Released version 1.0.2
.
What's difference?
startTransform()
, startTransformWithDelay(delay: Long)
, finishTransform()
, finishTransformWithDelay(delay: Long)
functionalites are added.
startTransform and finishTransform
So we don't need to put container
parameter to startTransform()
and finishTransform
methods.
// start transformation when touching the fab.
fab.setOnClickListener {
transformationLayout.startTransform()
}
startTransformWithDelay and finishTransformWithDelay
We can start transformation with delaying.
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_detail)
// starts transformation automatically 200ms later.
transformationLayout.startTransformWithDelay(200)
}