一个优美炫酷的点赞效果

效果图如下:

攻克难点:

  • 心形图片的路径等走向
  • 心形图片的控制范围

部分代码如下:

通过AbstractPathAnimator定义飘心动画控制器

   @Overridepublic void start(final View child, final ViewGroup parent) {parent.addView(child, new ViewGroup.LayoutParams(mConfig.heartWidth, mConfig.heartHeight));FloatAnimation anim = new FloatAnimation(createPath(mCounter, parent, 2), randomRotation(), parent, child);anim.setDuration(mConfig.animDuration);anim.setInterpolator(new LinearInterpolator());//启动动画anim.setAnimationListener(new Animation.AnimationListener() {@Overridepublic void onAnimationEnd(Animation animation) {mHandler.post(new Runnable() {@Overridepublic void run() {parent.removeView(child);}});mCounter.decrementAndGet();}@Overridepublic void onAnimationRepeat(Animation animation) {}@Overridepublic void onAnimationStart(Animation animation) {mCounter.incrementAndGet();}});anim.setInterpolator(new LinearInterpolator());child.startAnimation(anim);}
  /*** 根据图片设置bitmap* @param color* @return*/public Bitmap createHeart(int color) {if (sHeart == null) {sHeart = BitmapFactory.decodeResource(getResources(), mHeartResId);}if (sHeartBorder == null) {sHeartBorder = BitmapFactory.decodeResource(getResources(), mHeartBorderResId);}Bitmap heart = sHeart;Bitmap heartBorder = sHeartBorder;Bitmap bm = createBitmapSafely(heartBorder.getWidth(), heartBorder.getHeight());if (bm == null) {return null;}Canvas canvas = sCanvas;canvas.setBitmap(bm);Paint p = sPaint;canvas.drawBitmap(heartBorder, 0, 0, p);p.setColorFilter(new PorterDuffColorFilter(color, PorterDuff.Mode.SRC_ATOP));float dx = (heartBorder.getWidth() - heart.getWidth()) / 2f;float dy = (heartBorder.getHeight() - heart.getHeight()) / 2f;canvas.drawBitmap(heart, dx, dy, p);p.setColorFilter(null);canvas.setBitmap(null);return bm;}

如何创建一个path

 public Path createPath(AtomicInteger counter, View view, int factor) {Random r = mRandom;int x = r.nextInt(mConfig.xRand);int x2 = r.nextInt(mConfig.xRand);int y = view.getHeight() - mConfig.initY;int y2 = counter.intValue() * 15 + mConfig.animLength * factor + r.nextInt(mConfig.animLengthRand);factor = y2 / mConfig.bezierFactor;//随机xPointint xPointFactor = mRandom.nextInt(mConfig.xPointFactor);x = xPointFactor + x;x2 = xPointFactor + x2;int y3 = y - y2;y2 = y - y2 / 2;Path p = new Path();p.moveTo(mConfig.initX, y);p.cubicTo(mConfig.initX, y - factor, x, y2 + factor, x, y2);p.moveTo(x, y2);p.cubicTo(x, y2 - factor, x2, y3 + factor, x2, y3);return p;}

Activity中代码:

项目地址:

https://github.com/androidstarjack/MyShowHonorSimple

更多文章

2017上半年技术文章集合—184篇文章分类汇总

NDK项目实战—高仿360手机助手之卸载监听

相信自己,没有做不到的,只有想不到的

如果你觉得此文对您有所帮助,欢迎入群 QQ交流群 :644196190
微信公众号:终端研发部

高级UI特效仿直播点赞效果—一个优美炫酷的点赞动画相关推荐

  1. android炫酷动画代码,Android高级UI特效仿直播点赞动画效果

    Android高级UI特效仿直播点赞动画效果 发布时间:2020-10-02 16:06:18 来源:脚本之家 阅读:117 作者:mrr 本文给大家分享高级UI特效仿直播点赞效果-一个优美炫酷的点赞 ...

  2. html 星空效果,html5 canvas炫酷旋转银河系星空背景特效

    这是一款html5 canvas炫酷旋转银河系星空背景特效.该特效通过canvas来绘制银河系星盘,并制作星系旋转的效果,非常炫酷. 使用方法 HTML结构 该旋转银河系星空背景特效的HTML结果只需 ...

  3. html炫酷边框样式,利用SVG和CSS3来实现一个炫酷的边框动画

    这篇文章主要介绍了利用SVG和CSS3来实现一个炫酷的边框动画,不使用JavaScript使得编写过程轻松了不少,需要的朋友可以参考下 今天我们来探索一下Carl Philipe Brenner的网站 ...

  4. 链游界王炸巨作 一个足够炫酷的NFT赛犬游戏震撼问世

    如果说2021年是GameFi和元宇宙爆炸的第一年,那么2022年将是Gamefi+Socialfi多彩蓬勃发展的一年.各种Gamefis层出不穷,许多人可以通过玩游戏赚钱.玩赚钱已经成为gamenf ...

  5. 西门子界面官方精美触摸屏+WINCC程序模板 西门子官方触摸屏程序模板,炫酷的扁平式动画效果,脚本动画,自动生成二维码,可仿真,堪比智能手机,有精简,精致,wincc,无线面板等包含了所有西门子人机界

    西门子界面官方精美触摸屏+WINCC程序模板 西门子官方触摸屏程序模板,炫酷的扁平式动画效果,脚本动画,自动生成二维码,可仿真,堪比智能手机,有精简,精致,wincc,无线面板等包含了所有西门子人机界 ...

  6. html边框炫酷效果,6种炫酷的CSS3按钮边框动画特效_html/css_WEB-ITnose

    这是一款效果非常炫酷的CSS3按钮边框动画特效.这组按钮边框动画共有6种不同的效果.当鼠标滑过按钮的时候,按钮的边框会以不同的方式进行各种动画,效果非常的炫酷. 在线预览 源码下载 使用方法 HTML ...

  7. 球体动画Android,使用CSS创建一个炫酷的球体动画效果

    我最近看到了一个纯CSS实现的球体动画效果: 经过研究上面的效果实现起来大致可以分为五个步骤,下面就来一一介绍. 1.使用Jade和SCSS生成一个圆圈 创建一个圆圈的第一步是生成所有组成圆圈的粒子. ...

  8. 前端实现炫酷动效_web前端入门到实战:使用CSS创建一个炫酷的球体动画效果

    一个纯CSS实现的球体动画效果: 经过研究上面的效果实现起来大致可以分为五个步骤,下面就来一一介绍. 1.使用Jade和SCSS生成一个圆圈 创建一个圆圈的第一步是生成所有组成圆圈的粒子.有了Jade ...

  9. html怎么做动态切换效果,使用CSS制作一个比较炫酷的页面切换动画

    今天我们想与大家分享一组创意的页面切换熊效果集合.我们已经在示例中罗列了一组动画,可以被应用到页面切换过程中,创造出很有趣的导航效果.虽然有些效果都非常简单,只是简单的滑动动作,但另外的一些则是利用了 ...

最新文章

  1. java抽象的理解_Java中抽象类的理解
  2. css实现一个写信的格式
  3. javaSE----eclipse的安装与使用
  4. 多个项目共享一个app.config 的解决办法 (转)
  5. java mybatis狂神说sql_Mybatis 框架下 SQL 注入攻击的 3 种方式,真是防不胜防!
  6. php 递归分销角色,PHP递归无限分类
  7. C++(2)--代码结构
  8. mis dss gis_MIS中的决策支持系统(DSS)
  9. JEECG_3.7 权限开发视频正式发布
  10. 【Java 正则表达式】单字符匹配、预定字符、量词、Matcher(贪婪、勉强、独占模式)、捕获组、边界匹配符、String类与正则表达式
  11. batch size自适应log(1)
  12. Python数据分析中Groupby用法之通过字典或Series进行分组
  13. 计算机无线网怎么安装教程,wifi怎么安装,教您电脑如何安装wifi
  14. oracle 11g crsd ocssd,[Oracle 11g r2(11.2.0.4.0)]集群守护进程gipc介绍
  15. 由双系统变单系统——如何删除另一个操作系统
  16. 显卡内存管理机制及驱动实现(Intel gma500为例)
  17. java猴子分桃问题_通俗易懂、简单粗暴得解决猴子分桃问题
  18. MySQL 替换手机号码中间4位为星号显示
  19. 写给自己——瞎写瞎画坑规(自己挖坑自己填啊!!)
  20. POJO和PO的概念,区别

热门文章

  1. 如何获取特定经纬度在SRTM3中的高程值
  2. Java 数据结构总结
  3. 全卷积网络FCN详细讲解(超级详细哦)
  4. 微前端框架chunchao(春潮)开源啦
  5. 基于ssm振华电器商城商城
  6. Read timed out | SSL peer shut down incorrectly
  7. Facebook攻略--引流方法
  8. python语言规定标识符_Python语法规则
  9. ubuntu下vsftpd配置详细篇
  10. MATLAB数据类型(1)