Android - 控件抖动效果

思路:(左右抖动)

  1. 编写一个动画:控件从左移到右。
  2. 然后执行此动画多次。

cycleInterpolator加速器

  • 作用:让动画连续执行多次
  • cycles:执行次数 (android:cycles="2"

效果

实际效果比图好,gif显示抖动不太全
在这里插入图片描述

在这里插入图片描述

1. 添加两个动画文件

在这里插入图片描述

  • 添加 anim文件

在这里插入图片描述

  • 新建2个 xml文件

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

  • shake_button.xml
<?xml version="1.0" encoding="utf-8"?>
<!--
    translate:移动标签
    fromXDelta,toXDelta:表示x轴移动的像素点
    fromYDelta,toYDelta:表示Y轴移动的像素点
    duration:持续时间(ms)
    interpolator:插值器(可以引用自定义)(引用系统的:https://www.jianshu.com/p/1f2501840db8)
-->
<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromXDelta="0"
    android:toXDelta="30"
    android:duration="200"
    android:interpolator="@anim/cycle_7"/>
  • cycles.xml
<?xml version="1.0" encoding="utf-8"?>
<cycleInterpolator xmlns:android="http://schemas.android.com/apk/res/android"
    android:cycles="2" />

在这里插入图片描述

2. 加载动画资源

  • MainActivity.java
public class MainActivity extends AppCompatActivity {
    
    Button bt;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        bt = findViewById(R.id.bt);
    }

    public void button(View v){
    
        //加载动画资源文件
        Animation shake = AnimationUtils.loadAnimation(this, R.anim.shake_button);

        //给组件播放动画效果
        //findViewById(R.id.bt).startAnimation(shake);  //写法一
        bt.startAnimation(shake);  //写法二
    }
}
  • activity_main.xml
	<Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="别点我"
        android:onClick="button"
        android:id="@+id/bt"/>

猜你喜欢

转载自blog.csdn.net/weixin_43707799/article/details/108560411