📅  最后修改于: 2023-12-03 14:50:49.778000             🧑  作者: Mango
在移动应用程序中,频繁使用到各式各样的按钮,而让按钮在用户点击或某个操作之后发生颤动可以更好地提醒用户。那么,如何实现圆形图标按钮颤动的效果呢?
实现圆形图标按钮颤动的效果,可以通过修改按钮的布局参数来达到。具体步骤如下:
具体实现代码如下:
// 定义帧动画文件 shake.xml
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/linear_interpolator"
android:oneshot="false">
<item android:drawable="@drawable/ic_button" android:duration="100" />
<item android:drawable="@drawable/ic_button_shake_1" android:duration="100" />
<item android:drawable="@drawable/ic_button_shake_2" android:duration="100" />
<item android:drawable="@drawable/ic_button_shake_3" android:duration="100" />
<item android:drawable="@drawable/ic_button_shake_4" android:duration="100" />
<item android:drawable="@drawable/ic_button_shake_5" android:duration="100" />
<item android:drawable="@drawable/ic_button_shake_6" android:duration="100" />
<item android:drawable="@drawable/ic_button_shake_7" android:duration="100" />
<item android:drawable="@drawable/ic_button_shake_8" android:duration="100" />
<item android:drawable="@drawable/ic_button_shake_9" android:duration="100" />
<item android:drawable="@drawable/ic_button_shake_10" android:duration="100" />
<item android:drawable="@drawable/ic_button_shake_11" android:duration="100" />
<item android:drawable="@drawable/ic_button_shake_12" android:duration="100" />
<item android:drawable="@drawable/ic_button_shake_13" android:duration="100" />
<item android:drawable="@drawable/ic_button_shake_14" android:duration="100" />
<item android:drawable="@drawable/ic_button_shake_15" android:duration="100" />
<item android:drawable="@drawable/ic_button_shake_16" android:duration="100" />
<item android:drawable="@drawable/ic_button_shake_17" android:duration="100" />
</animation-list>
// 启动动画
private void startShakeAnimation() {
Animation shakeAnimation = AnimationUtils.loadAnimation(getContext(), R.anim.shake);
// 设置动画结束后恢复按钮的位置和布局参数
shakeAnimation.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
// do nothing
}
@Override
public void onAnimationEnd(Animation animation) {
LayoutParams layoutParams = (LayoutParams) getLayoutParams();
layoutParams.leftMargin = mOriginalX;
layoutParams.topMargin = mOriginalY;
setLayoutParams(layoutParams);
mIsAnimating = false;
}
@Override
public void onAnimationRepeat(Animation animation) {
// do nothing
}
});
startAnimation(shakeAnimation);
}
通过简单的修改布局参数,即可实现圆形图标按钮颤动的效果,提醒用户进行相关操作。同时,在使用动画效果时,建议在动画结束后将控件的位置和布局参数恢复,以保证用户体验的连贯性。