博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
给View设置点击效果动画
阅读量:7115 次
发布时间:2019-06-28

本文共 2713 字,大约阅读时间需要 9 分钟。


代码

public class AnimationUtil {    public enum AnimationType {        PRESS, ROTATION    }    //存放View 是否在执行动画中    private static HashMap
animationMap = new HashMap<>(); //按下动画 public static void doAnimation(View view, AnimationType type) { String name = view.getId() + type.name(); if (animationMap.get(name) == null || animationMap.get(name)) { switch (type) { case PRESS: doPressAnimation(view); break; case ROTATION: doRotationAnimation(view); break; } } } private static void doPressAnimation(final View view) { float y = view.getY(); ObjectAnimator animator = ObjectAnimator.ofFloat(view, "y", y, y + 30, y); animator.setDuration(500); animator.setRepeatCount(0); animator.addListener(new Animator.AnimatorListener() { @Override public void onAnimationStart(Animator animation) { animationMap.put(view.getId() + AnimationType.PRESS.name(), false); } @Override public void onAnimationEnd(Animator animation) { animationMap.put(view.getId() + AnimationType.PRESS.name(), true); } @Override public void onAnimationCancel(Animator animation) { } @Override public void onAnimationRepeat(Animator animation) { } }); animator.setInterpolator(new AccelerateDecelerateInterpolator()); animator.start(); } private static void doRotationAnimation(final View view) { ObjectAnimator animator = ObjectAnimator.ofFloat(view, "rotation", 0, 20f, -20f, 20f, -20f, 0); animator.setDuration(500); animator.setRepeatCount(0); animator.addListener(new Animator.AnimatorListener() { @Override public void onAnimationStart(Animator animation) { animationMap.put(view.getId() + AnimationType.ROTATION.name(), false); } @Override public void onAnimationEnd(Animator animation) { animationMap.put(view.getId() + AnimationType.ROTATION.name(), true); } @Override public void onAnimationCancel(Animator animation) { } @Override public void onAnimationRepeat(Animator animation) { } }); animator.setInterpolator(new AccelerateDecelerateInterpolator()); animator.start(); }}复制代码

用法

AnimationUtil.doAnimation(View, AnimationUtil.AnimationType.PRESS); AnimationUtil.doAnimation(View, AnimationUtil.AnimationType.ROTATION);复制代码

转载地址:http://ndzel.baihongyu.com/

你可能感兴趣的文章
vim 常用命令集合
查看>>
区分大端和小端
查看>>
PEP 3102 -- Keyword-Only Arguments
查看>>
lch 儿童围棋课堂 初级篇1 ( (李昌镐 著))
查看>>
算法新解 (刘新宇 著)
查看>>
共享的文件
查看>>
交换变量的值
查看>>
转载-怎样更好地理解并记忆泰勒展开式?
查看>>
C++ 项目改动后eclipse 项目编译 改动无效
查看>>
github学习心得
查看>>
Qt Charts 下的BarChart数据系列标签显示Bug
查看>>
Soap的错误小结
查看>>
GlassFish下手动部署JSF程序
查看>>
IIS报错:Exception from HRESULT: 0x8007000B解决方法
查看>>
隐身扫描服务信息
查看>>
PHP获取新插入的主键id
查看>>
Mac/Linux 常用命令
查看>>
贝叶斯决策
查看>>
Ubutu16.04+Cuda9.2/9.0+Cudnn7.12/7.05+TensorFlow-gpu-1.8/1.6
查看>>
手机应用开发宝典:如何养成一款畅销APP
查看>>