Skip to content

Releases: skydoves/TransformationLayout

1.0.4

20 Apr 15:27
02c674e
Compare
Choose a tag to compare

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

22 Mar 08:29
7a00954
Compare
Choose a tag to compare

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

17 Mar 17:16
2d63094
Compare
Choose a tag to compare

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)
}

1.0.1

29 Feb 06:09
9276afe
Compare
Choose a tag to compare

Released version 1.0.1.

What is difference?

  • withView, withContext functionalities are added.

We can use it instead of withActivity in non-activity class like what RecyclerView.Adapter.

1.0.0

28 Feb 14:10
f1411ca
Compare
Choose a tag to compare

Released the first version 1.0.0.