Como fazer uma animação em Kotlin
Android Kotlin XML

Como fazer uma animação em Kotlin



Nesse tutorial vou descrever como fazer uma animação em kotlin e para isso vamos usar uma imagem. Assim sendo este o primeiro post de uma série sobre animações.

Primeiramente vamos criar um projeto vazio(Empty) para programarmos para fazer uma imagem rodar 360 graus e rotacionar novamente voltando.

Então para começar vou copiar uma imagem para a pasta drawable e inseri-la em uma ImageView.

Logo após copiar a imagem vamos começar a programar.

Como fazer uma animação em Kotlin

Então para fazer essa animação utilize o código a seguir, se você mudar os valores vai notar uma mudança na animação, essa animação é para a imagem rotacionar relativamente a ela mesma.

Portanto vou utilizar uma imagem redonada como descrevi em um tutorial anterior.

Enfim vamos ver como são os códigos para executar essa animação.

activity_main

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:app="http://schemas.android.com/apk/res-auto"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   tools:context=".MainActivity">
    <ImageView
       android:id="@+id/imgFoto"
       android:layout_width="300dp"
       android:layout_height="wrap_content"
       android:src="@drawable/foto"
       app:layout_constraintTop_toTopOf="parent"
       app:layout_constraintStart_toStartOf="parent"
       app:layout_constraintEnd_toEndOf="parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>

MainActivity

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        // Fazendo a imagem ficar redonda
        val bitmap = BitmapFactory.decodeResource(resources, R.drawable.foto)
        val bitmapRound = RoundedBitmapDrawableFactory.create(resources, bitmap)
        bitmapRound.cornerRadius = 1000f
        imgFoto.setImageDrawable(bitmapRound)

        // Animando em rotação a imagem
        imgFoto.setOnClickListener {
            rotateAnim(imgFoto)
        }
    }
   
    // Função de rotação da imagem
    fun rotateAnim(view: View){
        val interpolator = AccelerateDecelerateInterpolator()
        val animation = RotateAnimation(
            0f, 360f,
            Animation.RELATIVE_TO_SELF, 0.5f,
            Animation.RELATIVE_TO_SELF, 0.5f)
        animation.duration = 2000L
        animation.repeatMode = Animation.REVERSE
        animation.repeatCount = 1
        animation.interpolator = interpolator
        view.startAnimation(animation)
    }
}

A animação feita deve ficar com efeito igual a do video a seguir.

Espero ter ajudado a fazer sua primeira animação em Kotlin.





Rodrigo Leutz
Desenvolvedor Web e Android ( Kotlin e Java )
https://www.uware.com.br