why transform() method are not avalaible?

34 Views Asked by At

I'm trying to make a card with a working MaterialContainerTransform animation, and so far I've only been able to get as far as this. But .transform() part is "Unresolved reference: transform" and i don't get why.

package com.example.animationtest

import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
import com.example.animationtest.databinding.FragmentCollapsedCardBinding
import com.google.android.material.transition.platform.MaterialContainerTransform

class CollapsedCardFragment : Fragment() {

    private lateinit var binding: FragmentCollapsedCardBinding

    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        binding = FragmentCollapsedCardBinding.inflate(inflater, container, false)
        return binding.root
    }

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)

        // Инициализация карточки
        binding.cardTitle.text = "Заголовок карточки"
        binding.cardText.text = "Краткий текст"

        // Обработчик нажатия на карточку
        binding.card.setOnClickListener {
            val startView = binding.card
            val endView = requireView().findViewById<View>(R.id.expanded_card_container)

            val transform = MaterialContainerTransform()
            transform.setStartView(startView)
            transform.setEndView(endView)
            transform.setDuration(500) // Длительность анимации
            transform.transform()
        }
    }
}

This is my gradle dependences

implementation("androidx.core:core-ktx:1.12.0")
    implementation("androidx.appcompat:appcompat:1.6.1")
    implementation("com.google.android.material:material:1.11.0")
    implementation("androidx.constraintlayout:constraintlayout:2.1.4")
    kapt("androidx.databinding:databinding-compiler:8.2.2")
    implementation("org.jetbrains.kotlin:kotlin-stdlib:$1.9.22")
    implementation("androidx.core:core-ktx:1.12.0")
    implementation("androidx.navigation:navigation-fragment-ktx:2.7.7") 
    implementation("androidx.navigation:navigation-ui-ktx:2.7.7")  
    implementation("androidx.transition:transition:1.4.1")

Also, if you have any better ideas than this kind of code for creating ContainerTransform animation between collapsed and unfolded fragment cards, I'd be very happy for ideas, then I'm like 0 in Kotlin so far.

1

There are 1 best solutions below

0
Gabe Sechan On BEST ANSWER

Because there is no such function. Here's the docs for the class: https://developer.android.com/reference/com/google/android/material/transition/MaterialContainerTransform Notice there is no transform function mentioned, nor does any of its parent classes have one. Since I'm not sure what you meant to do there, I'm not sure what you actually meant to call. Maybe start() ?