分享大家一个关于ScaleAnimation的点击事件,个人非常喜欢
boolean fcous;
boolean isRunAnim;
boolean isClick;
public void setonClick(View view){
view.setClickable(true);
view.setOnTouchListener(new OnTouchListener() {
long startTime = 0;
@Override
public boolean onTouch(final View view, MotionEvent event) {
//手指移开的时候执行动画
switch (event.getAction()) {
case MotionEvent.ACTION_UP:
fcous=false;
if(System.currentTimeMillis()-startTime<=300){//点击事件
isClick=true;
}
if(!isRunAnim){
ScaleAnimation ScaleAnimation = new ScaleAnimation(0.95f,1.0f, 0.95f,1.0f, Animation.RELATIVE_TO_SELF, 0.5f,Animation.RELATIVE_TO_SELF, 0.5f);
ScaleAnimation.setDuration(250);
ScaleAnimation.setFillAfter(true);
view.setAnimation(ScaleAnimation);
view.startAnimation(ScaleAnimation);
ScaleAnimation.setAnimationListener(new AnimationListener() {
@Override
public void onAnimationStart(Animation arg0) {
}
@Override
public void onAnimationRepeat(Animation arg0) {
}
@Override
public void onAnimationEnd(Animation arg0) {
if(isClick){
onClick(view);
}
}
});
}
break;
case MotionEvent.ACTION_CANCEL:
view.clearAnimation();
break;
case MotionEvent.ACTION_DOWN:
fcous=true;
isClick=false;
startTime=System.currentTimeMillis();
ScaleAnimation bottomLiftScaleAnimation = new ScaleAnimation(1.0f,0.95f, 1.0f,0.95f, Animation.RELATIVE_TO_SELF, 0.5f,Animation.RELATIVE_TO_SELF, 0.5f);
bottomLiftScaleAnimation.setDuration(250);
view.setAnimation(bottomLiftScaleAnimation);
view.startAnimation(bottomLiftScaleAnimation);
bottomLiftScaleAnimation.setFillAfter(true);
bottomLiftScaleAnimation.setAnimationListener(new AnimationListener() {
@Override
public void onAnimationStart(Animation arg0) {
isRunAnim=true;
}
@Override
public void onAnimationRepeat(Animation arg0) {
}
@Override
public void onAnimationEnd(Animation arg0) {
isRunAnim=false;
if(!fcous){
ScaleAnimation ScaleAnimation = new ScaleAnimation(0.95f,1.0f, 0.95f,1.0f, Animation.RELATIVE_TO_SELF, 0.5f,Animation.RELATIVE_TO_SELF, 0.5f);
ScaleAnimation.setDuration(250);
ScaleAnimation.setFillAfter(true);
view.setAnimation(ScaleAnimation);
view.startAnimation(ScaleAnimation);
ScaleAnimation.setAnimationListener(new AnimationListener() {
@Override
public void onAnimationStart(Animation arg0) {
}
@Override
public void onAnimationRepeat(Animation arg0) {
}
@Override
public void onAnimationEnd(Animation arg0) {
if(isClick){
onClick(view);
}
}
});
}
}
});
break;
}
return true;
}
});
}