自定义Button实现button点击缩放动画效果
<span style="font-family:SimSun;font-size:14px;">package com.example.mydemo.scalebutton;
import android.content.Context;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.Button;
import com.example.mydemo.R;
public class ScaleButton extends Button {
private Context context;
public ScaleButton(Context context) {
this(context, null);
this.context = context;
}
public ScaleButton(Context context, AttributeSet attrs) {
this(context, attrs, 0);
this.context = context;
}
public ScaleButton(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
super.onTouchEvent(event);
switch (event.getAction() & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_DOWN:
beginScale(R.anim.zoom_in);
break;
case MotionEvent.ACTION_MOVE:
break;
case MotionEvent.ACTION_UP:
beginScale(R.anim.zoom_out);
break;
case MotionEvent.ACTION_CANCEL:
beginScale(R.anim.zoom_out);
break;
}
return true;
}
private synchronized void beginScale(int animation) {
Animation an = AnimationUtils.loadAnimation(context, animation);
an.setDuration(80);
an.setFillAfter(true);
this.startAnimation(animation);
}
}</span>
zoom_in.xml
<pre name="code" class="java"><span style="font-family:SimSun;font-size:14px;"><?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<scale
android:fromXScale="1"
android:fromYScale="1"
android:pivotX="50%"
android:pivotY="50%"
android:toXScale="1.2"
android:toYScale="1.2" />
</set></span>
zoom_out.xml
<span style="font-family:SimSun;font-size:14px;"><?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<scale
android:fromXScale="1.2"
android:fromYScale="1.2"
android:pivotX="50%"
android:pivotY="50%"
android:toXScale="1"
android:toYScale="1" />
</set></span>
将zoom_in.xml和zoom_out.xml文件放在res/anim目录下
使用时按照自定义控件的方式在布局文件中引用即可,在java代码中叶可以使用button的setOnClickListener事件