Crear una animación similar a un corazón de Instagram/Twitter en Android

En este artículo, aprendamos cómo crear una animación Me gusta de corazón de Instagram/Twitter en Android. La animación Me gusta de Twitter es bastante buena y atractiva. Supongamos que uno quiere hacer una aplicación como Twitter, Instagram o Facebook donde a los usuarios les pueden gustar las publicaciones, allí uno puede usar esta vista. También se pueden usar Leonids en lugar de esto, pero es muy fácil de usar en comparación con Leonids . Esta es una biblioteca de animaciones y las animaciones ayudan a llamar la atención del usuario, por lo que es mejor aprenderlas.
Twitter-like-animation1

Acercarse

  1. Agregue la biblioteca de soporte en el archivo build.gradle y agregue la dependencia en la sección de dependencias.

    implementation 'pub.hanks:smallbang:1.2.2'     
  2. Cree un nuevo Directorio de recursos de Android y, para ello, haga clic con el botón derecho en la carpeta res -> Directorio de recursos de Android , asegúrese de seleccionar el tipo de recurso como color .
  3. Ahora cree un nuevo archivo text_selector.xml en el directorio de color y agregue el siguiente código. Este archivo se usa para seleccionar TextColor según el estado de TextView .

    selector_texto.xml

    <?xml version="1.0" encoding="utf-8"?>
        <item android:color="@color/colorPrimary"
              android:state_selected="true"/>
        <item android:color="#D6D6D6"/>
    </selector>
  4. Ahora cree un nuevo archivo ic_heart.xml en el directorio dibujable y agregue el siguiente código o puede descargar la imagen vectorial de este enlace y pegarla en la carpeta dibujable.

    ic_corazón.xml

    <vector android:height="32dp" 
        android:viewportHeight="412.735"
        android:viewportWidth="412.735" 
        android:width="32dp" 
        <path android:fillColor="#FF000000" 
         android:pathData="M295.706,35.522C295.706,35.522 295.706,
              35.522 295.706,35.522c-34.43,-0.184 -67.161,14.937 
              -89.339,41.273c-22.039,-26.516 -54.861,-41.68 -89.339,
              -41.273C52.395,35.522 0,87.917 0,152.55C0,263.31 193.306,
              371.456 201.143,375.636c3.162,2.113 7.286,2.113 10.449,
              0c7.837,-4.18 201.143,-110.759 201.143,-223.086C412.735,
              87.917 360.339,35.522 295.706,35.522zM206.367,
              354.738C176.065,336.975 20.898,242.412 20.898,152.55c0,
              -53.091 43.039,-96.131 96.131,-96.131c32.512,-0.427 
              62.938,15.972 80.457,43.363c3.557, 4.905 10.418,5.998
              15.323,2.44c0.937,-0.68 1.761,-1.503 2.44,
              -2.44c29.055,-44.435 88.631,-56.903 133.066,-27.848c27.202,
              17.787 43.575,48.114 43.521,80.615C391.837,243.456 236.669,
              337.497 206.367,354.738z"/>
    </vector>
  5. Ahora cree un nuevo archivo ic_heart_red.xml en el directorio dibujable y agregue el siguiente código o puede descargar la imagen vectorial de este enlace y pegarla en la carpeta dibujable.

    ic_corazón_rojo.xml

        android:width="391.837dp"
        android:height="391.837dp"
        android:viewportWidth="391.837"
        android:viewportHeight="391.837">
      <path
          android:pathData="M285.257,35.528c58.743,0.286 106.294,
                  47.836 106.58,106.58c0,107.624 -195.918,214.204
                 -195.918,214.204S0,248.165 0,142.108c0,
                 -58.862 47.717,-106.58 106.58,-106.58l0,0c36.032,
                 -0.281 69.718,17.842 89.339,48.065C215.674,53.517 
                  249.273,35.441 285.257,35.528z"
          android:fillColor="#D7443E"/>
    </vector>
  6. Ahora cree un nuevo archivo heart_selector.xml en drawable y agregue el siguiente código. Este archivo se utiliza para seleccionar la imagen en función del estado de ImageView .

    selector_corazon.xml

    <?xml version="1.0" encoding="utf-8"?>
        <item android:drawable="@drawable/ic_heart_red"
              android:state_selected="true"/>
        <item android:drawable="@drawable/ic_heart"/>
    </selector>
  7. Agregue el siguiente código en el archivo activity_main.xml . En este archivo, agregamos ImageView y TextView como childView al diseño de SmallBangView . Agregue heart_selector en la etiqueta src de imageView y text_Selector en la etiqueta textColor de TextView.

    actividad_principal.xml

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:gravity="center">
      
        <xyz.hanks.library.bang.SmallBangView
            android:layout_margin="20dp"
            android:id="@+id/imageViewAnimation"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            >
            <ImageView
                android:id="@+id/imageView"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:src="@drawable/heart_selector"
               />
      
        </xyz.hanks.library.bang.SmallBangView>
      
        <xyz.hanks.library.bang.SmallBangView
      
            android:id="@+id/textViewAnimation"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
      
            <TextView
                android:textColor="@color/text_selector"
                android:textAlignment="center"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="GeeksForGeeks"
                android:textSize="25sp"
                android:textStyle="bold" />
        </xyz.hanks.library.bang.SmallBangView>
    </LinearLayout>
  8. Agregue el siguiente código en el archivo MainActivity.java . En este archivo, agregamos OnClickListner a ImageView y TextView , que se invocarán automáticamente cada vez que el usuario toque la vista. Si el estado es verdadero, es decir, ImageView o textView ya están seleccionados, llamamos setSelected a falso; de lo contrario, llamamos a LikeAnimation en la vista.

    MainActivity.java

    package org.geeksforgeeks.twitterLikeAnimaton;          
      
    import android.os.Bundle;
    import android.view.View;
    import androidx.annotation.Nullable;
    import androidx.appcompat.app.AppCompatActivity;
    import xyz.hanks.library.bang.SmallBangView;
      
    public class MainActivity extends AppCompatActivity {
      
        SmallBangView imageView,textView;
      
        @Override
        protected void onCreate(@Nullable Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
      
            textView = findViewById(R.id.textViewAnimation);
            imageView = findViewById(R.id.imageViewAnimation);
      
            textView.setOnClickListener(
                     new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    if (textView.isSelected()) {
                        textView.setSelected(false);
                    } else {
                        // if not selected only 
                        // then show animation.
                        textView.setSelected(true);
                        textView.likeAnimation();
                    }
                }
            });
      
            imageView.setOnClickListener(
                      new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    if (imageView.isSelected()) {
                        imageView.setSelected(false);
                    } else {
                        // if not selected only 
                        // then show animation.
                        imageView.setSelected(true);
                        imageView.likeAnimation();
                    }
                }
            });
        }
    }
    1. Ejecutar como emulador

Publicación traducida automáticamente

Artículo escrito por madhavmaheshwarimm20 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *