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特效仿直播点赞动画效果相关推荐

  1. 高级UI特效仿直播点赞效果—一个优美炫酷的点赞动画

    一个优美炫酷的点赞效果 效果图如下: 攻克难点: 心形图片的路径等走向 心形图片的控制范围 部分代码如下: 通过AbstractPathAnimator定义飘心动画控制器 @Overridepubli ...

  2. android 炫酷进度条,Android打造炫酷进度条效果

    本文实例为大家分享了Android炫酷进度条效果的具体代码,供大家参考,具体内容如下 HorizontalProgressbarWithProgress的代码 import android.conte ...

  3. Android炫酷的3D球型标签云开源库 3dTagCloudAndroid 的使用

    Android炫酷的3D球形标签云开源库 3dTagCloudAndroid 的使用 文章目录 Android炫酷的3D球形标签云开源库 3dTagCloudAndroid 的使用 学习过程 使用体会 ...

  4. Linux中一些有用而炫酷的代码

    Linux中一些有用而炫酷的代码 文章目录 Linux中一些有用而炫酷的代码 一.cal 1.当月的日历 2.近三个月的日历 3.一年的日历 二.yes 三.htop 四.fortune 五.scre ...

  5. 炫酷相册代码,祝对象生日快乐!

    gif动图效果: 由于gif只能展示部分效果,你可以通过视频查看效果–>>完整效果请看视频 可以更改里面的照片.生日倒计时和背景音乐,需要代做的直接私信我即可. 完整项目地址–>&g ...

  6. android炫酷的动画效果

    这段时间看到一些比较好看的android动画效果,下面我就给大家一些我比较喜欢的动画效果,并附上源码希望对你们有用处. 1.很简单却很酷的粒子破碎效果 介绍:  实现思路 1.新建一个 Bean Pa ...

  7. Android 炫酷动画APP,21 款炫酷动画开源框架,照亮你的APP

    原标题:21 款炫酷动画开源框架,照亮你的APP 2017年安卓巴士全球开发者论坛-上海站 前言 最近对应用的UI视觉效果突然来了兴致,所以找了一些合适开源控件,这样更加省时,再此分享给大家,希望能对 ...

  8. Android炫酷的UI界面

    Android酷炫实用的开源框架(UI框架) 前言 忙碌的工作终于可以停息一段时间了,最近突然有一个想法,就是自己写一个app,所以找了一些合适开源控件,这样更加省时,再此分享给大家,希望能对大家有帮 ...

  9. android 炫酷时间轴,这38款超级炫酷的时间轴特效代码案例,总有一款是你需要的...

    最近,看到一些很漂亮的时间轴图表,效果真的非常不错.这些图表,写到需要的项目中,也是非常棒的.当然,你也可以拿它来当作学习的小练习.时间轴,在很多企业官网或者关于企业历史大事件介绍的时候,使用的频率还 ...

最新文章

  1. WIN7添加loopback接口
  2. linux下makefile中cp,make与makefile 的理解
  3. java if,if...else...的应用
  4. ZooKeeper集群部署方式
  5. sv_labs学习笔记——sv_lab2(System Verilog)
  6. hive学习4(hive的脚本执行)
  7. 深度学习图像分类(三): VggNet
  8. Ubuntu系统下载(清华大学开源软件镜像站)(ubuntu-20.04.1-desktop-amd64.iso)
  9. python3爬虫实战一: 爬取豆瓣最新上映电影及画出词云分布
  10. 你真的知道如何使用Target.Count吗?
  11. 余承东吐槽iPhone X长的丑体验差;雷军称小米明年要进世界500强;特斯拉股价被指太荒唐丨价值早报
  12. 小程序学习历程(二):注册小程序测试号
  13. php 只取汉字,php怎么只保留汉字
  14. MySQL--SQL执行顺序详解
  15. 51单片机c语言编程的头文件,51单片机编程的头文件reg51.h详解
  16. Vue2基础、组件化编程、脚手架、Vuex、Vue路由、UI组件库
  17. R语言初体验(新手常见问题)
  18. 流氓劫持(浏览器)、
  19. 传统渲染与DLSS2.0的对比
  20. SQL中while语句求1到100的和

热门文章

  1. leetcode 108. Convert Sorted Array to Binary Search Tree | 108. 将有序数组转换为二叉搜索树(Java)
  2. 算法设计与分析:芯片测试问题、选择问题详解
  3. leetcode 222. Count Complete Tree Nodes | 222. 完全二叉树的节点个数(Java)
  4. 【PAT甲级 火星数字】1100 Mars Numbers (20 分)Java 全部AC
  5. netty系列之:轻轻松松搭个支持中文的服务器
  6. ES6中的新特性:Iterables和iterators
  7. JDK11的新特性:HTTP API和reactive streams
  8. Hadoop2调优(一):如何控制job的map任务和reduce任务的数量
  9. Object类中的两个方法——wait和notify使用总结
  10. 理解MySQL——架构与概念