📜  圆形图标按钮颤动 (1)

📅  最后修改于: 2023-12-03 14:50:49.778000             🧑  作者: Mango

圆形图标按钮颤动

在移动应用程序中,频繁使用到各式各样的按钮,而让按钮在用户点击或某个操作之后发生颤动可以更好地提醒用户。那么,如何实现圆形图标按钮颤动的效果呢?

实现方法

实现圆形图标按钮颤动的效果,可以通过修改按钮的布局参数来达到。具体步骤如下:

  1. 创建一个帧动画文件,定义按钮颤动的帧数和时长
  2. 在按钮的点击事件中启动动画
  3. 在动画结束后,恢复按钮的位置和布局参数

具体实现代码如下:

// 定义帧动画文件 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);
}
结束语

通过简单的修改布局参数,即可实现圆形图标按钮颤动的效果,提醒用户进行相关操作。同时,在使用动画效果时,建议在动画结束后将控件的位置和布局参数恢复,以保证用户体验的连贯性。