• android动画工具类


    import android.content.Context;
    import android.view.MotionEvent;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.view.animation.Animation;
    import android.view.animation.CycleInterpolator;
    import android.view.animation.ScaleAnimation;
    import android.view.animation.TranslateAnimation;
    
    /**
     * 动画工具类
     * Created by Administrator on 2015/10/20 0020.
     */
    public class AnimUtils {
    
    
        /**
         * 抖动动画,左右抖动
         * @param context 上下文
         * @param v 要执行动画的view
         */
        public static void shake(Context context,View v){
            Animation shake = new TranslateAnimation(0, 10, 0, 0);//移动方向
            shake.setDuration(1000);//执行总时间
            shake.setInterpolator(new CycleInterpolator(7));//循环次数
            v.startAnimation(shake);
        }
    
        /**
         * 缩放动画,按下时缩放,抬起时恢复
         * @param v 要执行动画的view
         * @param event 触摸事件
         * @param listener 点击事件
         * @return  触摸结果
         */
        public static boolean setClickAnim(View v,MotionEvent event,OnClickListener listener){
            float start = 1.0f;
            float end = 0.95f;
            Animation scaleAnimation = new ScaleAnimation(start, end, start, end,
                    Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF,
                    0.5f);
            Animation endAnimation = new ScaleAnimation(end, start, end, start,
                    Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF,
                    0.5f);
            scaleAnimation.setDuration(200);
            scaleAnimation.setFillAfter(true);
            endAnimation.setDuration(200);
            endAnimation.setFillAfter(true);
            switch (event.getAction()) {
                // 按下时调用
                case MotionEvent.ACTION_DOWN:
                    v.startAnimation(scaleAnimation);
                    v.invalidate();
                    break;
                // 抬起时调用
                case MotionEvent.ACTION_UP:
                    v.startAnimation(endAnimation);
                    v.invalidate();
                    if(listener!=null){
                        listener.onClick(v);
                    }
                    break;
                // 滑动出去不会调用action_up,调用action_cancel
                case MotionEvent.ACTION_CANCEL:
                    v.startAnimation(endAnimation);
                    v.invalidate();
                    break;
            }
            // 不返回true,Action_up就响应不了
            return true;
        }
    
    }

    调用方法

    1、抖动动画

    AnimUtils.shake(context, view);

    2、缩放动画(先implements OnClickListener,OnTouchListener再重写onTouch方法)

    public boolean onTouch(View v, MotionEvent ev) {
      return AnimUtils.setClickAnim(v, ev, this); 
    }
  • 相关阅读:
    SQLite 与 SqlCE 比较
    window.showModalDialog以及window.open用法简介
    Flex 3D Engine演示 帅呆了。
    MySQLFront
    数据库复制相同表语句
    org.jboss.web.jsf.integration.config.JBossJSFConfigureListener
    PHP中全局变量$_SERVER的详细用法
    PHP date函数使用说明
    如何学习Flex Framework
    richfaces a4j标签帮助文档 地址
  • 原文地址:https://www.cnblogs.com/kangweifeng/p/4894577.html
Copyright © 2020-2023  润新知