高级UI特效仿直播点赞效果—一个优美炫酷的点赞动画
一个优美炫酷的点赞效果
效果图如下:
攻克难点:
- 心形图片的路径等走向
- 心形图片的控制范围
部分代码如下:
通过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特效仿直播点赞效果—一个优美炫酷的点赞动画相关推荐
- android炫酷动画代码,Android高级UI特效仿直播点赞动画效果
Android高级UI特效仿直播点赞动画效果 发布时间:2020-10-02 16:06:18 来源:脚本之家 阅读:117 作者:mrr 本文给大家分享高级UI特效仿直播点赞效果-一个优美炫酷的点赞 ...
- html 星空效果,html5 canvas炫酷旋转银河系星空背景特效
这是一款html5 canvas炫酷旋转银河系星空背景特效.该特效通过canvas来绘制银河系星盘,并制作星系旋转的效果,非常炫酷. 使用方法 HTML结构 该旋转银河系星空背景特效的HTML结果只需 ...
- html炫酷边框样式,利用SVG和CSS3来实现一个炫酷的边框动画
这篇文章主要介绍了利用SVG和CSS3来实现一个炫酷的边框动画,不使用JavaScript使得编写过程轻松了不少,需要的朋友可以参考下 今天我们来探索一下Carl Philipe Brenner的网站 ...
- 链游界王炸巨作 一个足够炫酷的NFT赛犬游戏震撼问世
如果说2021年是GameFi和元宇宙爆炸的第一年,那么2022年将是Gamefi+Socialfi多彩蓬勃发展的一年.各种Gamefis层出不穷,许多人可以通过玩游戏赚钱.玩赚钱已经成为gamenf ...
- 西门子界面官方精美触摸屏+WINCC程序模板 西门子官方触摸屏程序模板,炫酷的扁平式动画效果,脚本动画,自动生成二维码,可仿真,堪比智能手机,有精简,精致,wincc,无线面板等包含了所有西门子人机界
西门子界面官方精美触摸屏+WINCC程序模板 西门子官方触摸屏程序模板,炫酷的扁平式动画效果,脚本动画,自动生成二维码,可仿真,堪比智能手机,有精简,精致,wincc,无线面板等包含了所有西门子人机界 ...
- html边框炫酷效果,6种炫酷的CSS3按钮边框动画特效_html/css_WEB-ITnose
这是一款效果非常炫酷的CSS3按钮边框动画特效.这组按钮边框动画共有6种不同的效果.当鼠标滑过按钮的时候,按钮的边框会以不同的方式进行各种动画,效果非常的炫酷. 在线预览 源码下载 使用方法 HTML ...
- 球体动画Android,使用CSS创建一个炫酷的球体动画效果
我最近看到了一个纯CSS实现的球体动画效果: 经过研究上面的效果实现起来大致可以分为五个步骤,下面就来一一介绍. 1.使用Jade和SCSS生成一个圆圈 创建一个圆圈的第一步是生成所有组成圆圈的粒子. ...
- 前端实现炫酷动效_web前端入门到实战:使用CSS创建一个炫酷的球体动画效果
一个纯CSS实现的球体动画效果: 经过研究上面的效果实现起来大致可以分为五个步骤,下面就来一一介绍. 1.使用Jade和SCSS生成一个圆圈 创建一个圆圈的第一步是生成所有组成圆圈的粒子.有了Jade ...
- html怎么做动态切换效果,使用CSS制作一个比较炫酷的页面切换动画
今天我们想与大家分享一组创意的页面切换熊效果集合.我们已经在示例中罗列了一组动画,可以被应用到页面切换过程中,创造出很有趣的导航效果.虽然有些效果都非常简单,只是简单的滑动动作,但另外的一些则是利用了 ...
最新文章
- java抽象的理解_Java中抽象类的理解
- css实现一个写信的格式
- javaSE----eclipse的安装与使用
- 多个项目共享一个app.config 的解决办法 (转)
- java mybatis狂神说sql_Mybatis 框架下 SQL 注入攻击的 3 种方式,真是防不胜防!
- php 递归分销角色,PHP递归无限分类
- C++(2)--代码结构
- mis dss gis_MIS中的决策支持系统(DSS)
- JEECG_3.7 权限开发视频正式发布
- 【Java 正则表达式】单字符匹配、预定字符、量词、Matcher(贪婪、勉强、独占模式)、捕获组、边界匹配符、String类与正则表达式
- batch size自适应log(1)
- Python数据分析中Groupby用法之通过字典或Series进行分组
- 计算机无线网怎么安装教程,wifi怎么安装,教您电脑如何安装wifi
- oracle 11g crsd ocssd,[Oracle 11g r2(11.2.0.4.0)]集群守护进程gipc介绍
- 由双系统变单系统——如何删除另一个操作系统
- 显卡内存管理机制及驱动实现(Intel gma500为例)
- java猴子分桃问题_通俗易懂、简单粗暴得解决猴子分桃问题
- MySQL 替换手机号码中间4位为星号显示
- 写给自己——瞎写瞎画坑规(自己挖坑自己填啊!!)
- POJO和PO的概念,区别