自定义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事件

更多相关文章

  1. Android开发学习之ImageView手势拖拽、缩放、旋转
  2. Android Studio Gradle 缓存文件夹设置
  3. NDK笔记---Android.mk文件
  4. android设备中的临时文件夹在哪里?
  5. 使用Java解析XML文件以获取名称列表
  6. cocos2d-x避免手动修改android.mk文件来编译
  7. 尝试查看所有XML文件的图形布局时出现StackOverFlowError
  8. android使用存储在assets文件夹中的Linux工具
  9. 如何将音频文件与新视频文件合并?是否可以在Android中使用?

随机推荐

  1. Android中对于Bitmap的处理
  2. Android编译系统中的Kconfig,Makefile,.co
  3. Android NDK: Your APP_BUILD_SCRIPT poi
  4. android gallery的使用
  5. Android 7.1.2(Android N) Activity启动
  6. android 学习笔记(四)
  7. 关于Android如何禁止屏幕旋转刷新界面
  8. Android 动画小知识点
  9. android之启动桌面activity
  10. Android文件操作