Android - 控件抖动效果
程序员文章站
2024-02-05 20:35:04
...
思路:(左右抖动)
- 编写一个动画:控件从左移到右。
- 然后执行此动画多次。
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"/>