Android 的缩放动画

最近突发奇想想要实现一下最近比较热门的类似于“电子木鱼”的功能,但是敲木鱼时木鱼要有敲击的动画吧,尝试使用缩放动画实现。

效果

 

在res下新建anim文件夹

在anim文件夹下新建一个muyutranslate.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <scale

        android:repeatMode="reverse"
        android:repeatCount="1"
        android:duration="300"
        android:fromXScale="1.0"
        android:fromYScale="1.0"
        android:toXScale="0.9"
        android:toYScale="0.9"
        android:pivotX="50%"
        android:pivotY="50%"/>
</set>

android:repeatMode="reverse"//重复类型有两个值,reverse表示倒序回放,restart表示从头播放
        android:repeatCount="1"//重复次数
        android:duration="300"//持续时间,单位为毫秒,持续1秒则为1000
        android:fromXScale="1.0"//初始X轴缩放比例,1.0表示无变化
        android:fromYScale="1.0"
        android:toXScale="0.9"//结束X轴缩放比例
        android:toYScale="0.9"
        android:pivotX="50%"//缩放起点X轴坐标
              (数值、百分数、百分数p,
               譬如50表示以当前View左上角坐标加50px为初始点、
                50%表示以当前View的左上角加上当前View宽高的50%做为初始点、
                50%p表示以当前View的左上角加上父控件宽高的50%做为初始点) android:pivotY="50%"/>
Image控Button的信息,ImageButton的src设置为木鱼,敲一次木鱼相当于点击了一下ImageButton
<ImageButton
        android:id="@+id/ib_woodenfish"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="56dp"
        android:background="@null"
        android:src="@drawable/ic_woodenfish"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.509"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/tv_generalmerits" />

java中的相关代码

public class MainActivity extends Activity {
    private ImageButton ib_woodenfish;
    private Animation animation = null;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ib_woodenfish=findViewById(R.id.ib_woodenfish);
        animation = AnimationUtils.loadAnimation(this,
                R.anim.muyutranslate);

        ib_woodenfish.setOnClickListener(new View.OnClickListener() {
            @SuppressLint("ResourceType")
            @Override
            public void onClick(View v) {
                ib_woodenfish.startAnimation(animation);//点击后触发动画!
          //。。。其他乱七八糟的已省略
            }
        });
    }
}

点击后就会看到木鱼缩放效果。

posted @ 2022-11-11 20:47  拾一贰叁  阅读(670)  评论(0编辑  收藏  举报