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.

O código de nosso xml deve ficar como o seguinte.

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>




Agora chegou a hora de fazer a animação no nosso arquivo MainActivity para que quando clicarmos na imagem ele rotacione a mesma.

MainActivity

package br.com.uware.primeiraanimao

import android.graphics.BitmapFactory
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.View
import android.view.animation.AccelerateDecelerateInterpolator
import android.view.animation.Animation
import android.view.animation.RotateAnimation
import androidx.core.graphics.drawable.RoundedBitmapDrawableFactory
import kotlinx.android.synthetic.main.activity_main.*

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

Agora é só compilar e executar o aplicativo para ver como ficou o resultado.

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

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





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