前年做cocos开发,按钮会自带触摸放大效果,会带来不错的交互体验,而且也可以节省图片与内存。于是乎,今天在android也实现了类似效果。实际体验,感觉还不错。其实Android动画库也很强大的。
- 第一步 在res下面创建文件夹anim,用来放置动画xml。
- 第二步 在anim下面创建文件btn_scale_down.内容如下:
<?xml version="1.0" encoding="utf-8"?>
<scale xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator= "@android:anim/decelerate_interpolator"
android:duration="200"
android:fromXScale="1.0"
android:fromYScale="1.0"
android:pivotX="50%"
android:pivotY="50%"
android:repeatCount="0"
android:repeatMode="restart"
android:fillAfter="true"
android:startOffset="0"
android:toXScale="1.1"
android:toYScale="1.1" />
- 第三步 在anim下面创建文件btn_scale_up.内容如下:
<?xml version="1.0" encoding="utf-8"?>
<scale xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator= "@android:anim/decelerate_interpolator"
android:duration="200"
android:fromXScale="1.1"
android:fromYScale="1.1"
android:pivotX="50%"
android:pivotY="50%"
android:repeatCount="0"
android:fillAfter="true"
android:startOffset="0"
android:toXScale="1.0"
android:toYScale="1.0" />
- 第四步 为button设置触摸监听事件。进行一定封装,成为工具代码。代码如下:
/***
* 为控件设置放大动画
* @param context
* @param view
*/
public static void setSaleAnim(final Context context, View view){
view.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent event) {
//按下操作
if(event.getAction()==MotionEvent.ACTION_DOWN){
Animation animation= AnimationUtils.loadAnimation(context, R.anim.btn_scale_down);
view.startAnimation(animation);
}
//抬起操作
if(event.getAction()==MotionEvent.ACTION_UP){
Animation animation=AnimationUtils.loadAnimation(context, R.anim.btn_scale_up);
view.startAnimation(animation);
}
//移动操作
if(event.getAction()==MotionEvent.ACTION_MOVE){
}
return false;
}
});
}
致谢
参考文章
说明:本文xml各字段的含义在参考文章都有详细说明,读者可自行查阅。
网友评论