📌  相关文章
📜  如何在Android中实现View Shaker

📅  最后修改于: 2021-05-13 14:05:32             🧑  作者: Mango

View Shaker是一种动画,其中,屏幕的UI在有限的时间内振动。这可以在整个布局或某些特定的小部件上实现。开发人员经常使用这种效果,特别是显示不正确的凭据。

View Shaker可帮助我们为小部件制作动画。可以添加各种效果。
特效

  1. 引力
    闪光,脉冲,橡皮筋,震动,摇摆,摆动,弹跳,Tada,站立,波动

  • 特别的
      铰链,滚入,滚出,着陆,起飞,退出

  • 弹跳
      BounceIn,BounceInDown,BounceInLeft,BounceInRight,BounceInUp

  • 褪色
      FadeIn,FadeInUp,FadeInDown,FadeInLeft,FadeInRight
      FadeOut,FadeOutDown,FadeOutLeft,FadeOutRight,FadeOutUp

  • 翻动
      FlipInX,FlipOutX,FlipOutY

  • 旋转
      RotateIn,RotateInDownLeft,RotateInDownRight,RotateInUpLeft,RotateInUpRight
      RotateOut,RotateOutDownLeft,RotateOutDownRight,RotateOutUpLeft,RotateOutUpRight

  • 滑动
      SlideInLeft,SlideInRight,SlideInUp,SlideInDown
      SlideOutLeft,SlideOutRight,SlideOutUp,SlideOutDown

  • 飞涨
      ZoomIn,ZoomInDown,ZoomInLeft,ZoomInRight,ZoomInUp
      ZoomOut,ZoomOutDown,ZoomOutLeft,ZoomOutRight,ZoomOutUp

    在本文中,我们将看到在应用程序中添加这种效果的示例。

    在此示例中,用户想要登录GeeksforGeeks门户。用户输入了错误的密码,然后单击登录按钮。然后,我们可以使用View Shaker对视图进行动画处理,以使应用程序更具响应性。
    方法

    1. build.gradle文件中添加支持库,并在“依赖项”部分中添加依赖项。该库具有上述各种动画效果。它有助于使我们的应用程序更具响应性和动态性。
      dependencies {
          implementation 'com.daimajia.easing:library:2.0@aar'
          implementation 'com.daimajia.androidanimations:library:2.3@aar'
      }
      
    2. 现在,将以下代码添加到activity_main.xml文件中。这段代码在activity_main上添加了一个textview ,两个edittexts和一个按钮
      activity_main.xml
      
      
        
          
          
          
          


      MainActivity.java
      package org.geeksforgeeks.gfgviewshaker;
        
      import androidx.appcompat.app.AppCompatActivity;
      import android.os.Bundle;
      import android.view.View;
      import android.widget.Button;
      import android.widget.EditText;
      import com.daimajia.androidanimations
          .library
          .Techniques;
      import com.daimajia.androidanimations
          .library
          .YoYo;
        
      public class MainActivity
          extends AppCompatActivity {
        
          Button login;
          EditText id, password;
          @Override
          protected void onCreate(
              Bundle savedInstanceState)
          {
              super.onCreate(savedInstanceState);
              setContentView(R.layout.activity_main);
        
              login = findViewById(R.id.button);
              id = findViewById(R.id.editText1);
              password = findViewById(R.id.editText2);
        
              login.setOnClickListener(
                  new View.OnClickListener() {
        
                      @Override
                      public void onClick(View v)
                      {
                          YoYo.with(Techniques.Shake)
                              .duration(500)
                              .repeat(2)
                              .playOn(id);
        
                          YoYo.with(Techniques.Shake)
                              .duration(500)
                              .repeat(2)
                              .playOn(password);
                      }
                  });
          }
      }


    3. 现在,在MainActivity中添加以下代码。 Java文件。将onClickListener添加到“登录”按钮上,这将在两个edittext上都添加了Shake效果。诸如duration的不同功能设置持续时间, repeat设置效果应重复的次数, playOn设置特定窗口小部件上的效果。

      主要活动。Java

      package org.geeksforgeeks.gfgviewshaker;
        
      import androidx.appcompat.app.AppCompatActivity;
      import android.os.Bundle;
      import android.view.View;
      import android.widget.Button;
      import android.widget.EditText;
      import com.daimajia.androidanimations
          .library
          .Techniques;
      import com.daimajia.androidanimations
          .library
          .YoYo;
        
      public class MainActivity
          extends AppCompatActivity {
        
          Button login;
          EditText id, password;
          @Override
          protected void onCreate(
              Bundle savedInstanceState)
          {
              super.onCreate(savedInstanceState);
              setContentView(R.layout.activity_main);
        
              login = findViewById(R.id.button);
              id = findViewById(R.id.editText1);
              password = findViewById(R.id.editText2);
        
              login.setOnClickListener(
                  new View.OnClickListener() {
        
                      @Override
                      public void onClick(View v)
                      {
                          YoYo.with(Techniques.Shake)
                              .duration(500)
                              .repeat(2)
                              .playOn(id);
        
                          YoYo.with(Techniques.Shake)
                              .duration(500)
                              .repeat(2)
                              .playOn(password);
                      }
                  });
          }
      }
      

    输出: