android炫酷动画代码,Android高级UI特效仿直播点赞动画效果
Android高级UI特效仿直播点赞动画效果
发布时间:2020-10-02 16:06:18
来源:脚本之家
阅读:117
作者:mrr
本文给大家分享高级UI特效仿直播点赞效果—一个优美炫酷的点赞动画,具体实现代码大家参考本文。
效果图如下:
攻克难点:
心形图片的路径等走向 心形图片的控制范围
部分代码如下:
通过AbstractPathAnimator定义飘心动画控制器
@Override
public 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() {
@Override
public void onAnimationEnd(Animation animation) {
mHandler.post(new Runnable() {
@Override
public void run() {
parent.removeView(child);
}
});
mCounter.decrementAndGet();
}
@Override
public void onAnimationRepeat(Animation animation) {
}
@Override
public 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;
//随机xPoint
int 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中代码:
下面给大家分享一个源码:html5+canvas仿抖音直播爱心飘动点赞动画特效源码
总结
以上所述是小编给大家介绍的Android高级UI特效仿直播点赞动画效果,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对亿速云网站的支持!
android炫酷动画代码,Android高级UI特效仿直播点赞动画效果相关推荐
- 高级UI特效仿直播点赞效果—一个优美炫酷的点赞动画
一个优美炫酷的点赞效果 效果图如下: 攻克难点: 心形图片的路径等走向 心形图片的控制范围 部分代码如下: 通过AbstractPathAnimator定义飘心动画控制器 @Overridepubli ...
- android 炫酷进度条,Android打造炫酷进度条效果
本文实例为大家分享了Android炫酷进度条效果的具体代码,供大家参考,具体内容如下 HorizontalProgressbarWithProgress的代码 import android.conte ...
- Android炫酷的3D球型标签云开源库 3dTagCloudAndroid 的使用
Android炫酷的3D球形标签云开源库 3dTagCloudAndroid 的使用 文章目录 Android炫酷的3D球形标签云开源库 3dTagCloudAndroid 的使用 学习过程 使用体会 ...
- Linux中一些有用而炫酷的代码
Linux中一些有用而炫酷的代码 文章目录 Linux中一些有用而炫酷的代码 一.cal 1.当月的日历 2.近三个月的日历 3.一年的日历 二.yes 三.htop 四.fortune 五.scre ...
- 炫酷相册代码,祝对象生日快乐!
gif动图效果: 由于gif只能展示部分效果,你可以通过视频查看效果–>>完整效果请看视频 可以更改里面的照片.生日倒计时和背景音乐,需要代做的直接私信我即可. 完整项目地址–>&g ...
- android炫酷的动画效果
这段时间看到一些比较好看的android动画效果,下面我就给大家一些我比较喜欢的动画效果,并附上源码希望对你们有用处. 1.很简单却很酷的粒子破碎效果 介绍: 实现思路 1.新建一个 Bean Pa ...
- Android 炫酷动画APP,21 款炫酷动画开源框架,照亮你的APP
原标题:21 款炫酷动画开源框架,照亮你的APP 2017年安卓巴士全球开发者论坛-上海站 前言 最近对应用的UI视觉效果突然来了兴致,所以找了一些合适开源控件,这样更加省时,再此分享给大家,希望能对 ...
- Android炫酷的UI界面
Android酷炫实用的开源框架(UI框架) 前言 忙碌的工作终于可以停息一段时间了,最近突然有一个想法,就是自己写一个app,所以找了一些合适开源控件,这样更加省时,再此分享给大家,希望能对大家有帮 ...
- android 炫酷时间轴,这38款超级炫酷的时间轴特效代码案例,总有一款是你需要的...
最近,看到一些很漂亮的时间轴图表,效果真的非常不错.这些图表,写到需要的项目中,也是非常棒的.当然,你也可以拿它来当作学习的小练习.时间轴,在很多企业官网或者关于企业历史大事件介绍的时候,使用的频率还 ...
最新文章
- WIN7添加loopback接口
- linux下makefile中cp,make与makefile 的理解
- java if,if...else...的应用
- ZooKeeper集群部署方式
- sv_labs学习笔记——sv_lab2(System Verilog)
- hive学习4(hive的脚本执行)
- 深度学习图像分类(三): VggNet
- Ubuntu系统下载(清华大学开源软件镜像站)(ubuntu-20.04.1-desktop-amd64.iso)
- python3爬虫实战一: 爬取豆瓣最新上映电影及画出词云分布
- 你真的知道如何使用Target.Count吗?
- 余承东吐槽iPhone X长的丑体验差;雷军称小米明年要进世界500强;特斯拉股价被指太荒唐丨价值早报
- 小程序学习历程(二):注册小程序测试号
- php 只取汉字,php怎么只保留汉字
- MySQL--SQL执行顺序详解
- 51单片机c语言编程的头文件,51单片机编程的头文件reg51.h详解
- Vue2基础、组件化编程、脚手架、Vuex、Vue路由、UI组件库
- R语言初体验(新手常见问题)
- 流氓劫持(浏览器)、
- 传统渲染与DLSS2.0的对比
- SQL中while语句求1到100的和
热门文章
- leetcode 108. Convert Sorted Array to Binary Search Tree | 108. 将有序数组转换为二叉搜索树(Java)
- 算法设计与分析:芯片测试问题、选择问题详解
- leetcode 222. Count Complete Tree Nodes | 222. 完全二叉树的节点个数(Java)
- 【PAT甲级 火星数字】1100 Mars Numbers (20 分)Java 全部AC
- netty系列之:轻轻松松搭个支持中文的服务器
- ES6中的新特性:Iterables和iterators
- JDK11的新特性:HTTP API和reactive streams
- Hadoop2调优(一):如何控制job的map任务和reduce任务的数量
- Object类中的两个方法——wait和notify使用总结
- 理解MySQL——架构与概念