html5点赞仿抖音,仿抖音之——点赞动画
我这里做的是一个仿抖音点赞的动画,监听双击事件,在双击位置添加图片,对其进行一系列的缩放、移动、旋转、透明度的动画从而达到效果。
效果图:
制作思路:
1.将该ViewGroup的事件通过touch方法传递给创建的SimpleOnGestureListener,将双击事件回调给onDoubleTap方法。
2.在双击的坐标位置,添加一个ImageView,并设置大小和正确的左上边距。
3.观察抖音点赞动画,是通过第一阶段缩小、透明度,第二阶段的放大、透明度、上移的动画组合,进行实现动画效果。
点赞view代码:
public class LikeView extends RelativeLayout {
private GestureDetector gestureDetector;
/** 图片大小 */
private int likeViewSize = 300;
private int[] angles = new int[]{-30, 0, 30};
public LikeView(Context context) {
super(context);
init();
}
public LikeView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
private void init() {
//将事件传给GestureDetector处理双击事件
gestureDetector = new GestureDetector(new MyGestureDetectorListener());
setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
gestureDetector.onTouchEvent(event);
return true;
}
});
}
class MyGestureDetectorListener extends GestureDetector.SimpleOnGestureListener {
@Override
public boolean onDoubleTap(MotionEvent e) {
addImageView(e);
return true;
}
}
/**
* 在手势双击位置添加imageview
*
* @param e
*/
private void addImageView(MotionEvent e) {
ImageView imageView = new ImageView(getContext());
imageView.setImageDrawable(getResources().getDrawable(R.mipmap.ic_like)); //这里如果用background属性,添加在边缘图片会变形
addView(imageView);
RelativeLayout.LayoutParams layoutParams = new LayoutParams(likeViewSize, likeViewSize);
layoutParams.leftMargin = (int) e.getX() - likeViewSize / 2;
layoutParams.topMargin = (int) e.getY() - likeViewSize / 2;
imageView.setLayoutParams(layoutParams);
playAnim(imageView);
}
private void playAnim(final ImageView imageView) {
AnimationSet animationSet = new AnimationSet(true);
int degrees = angles[new Random().nextInt(3)];
animationSet.addAnimation(AnimUtils.rotateAnim(0, 0, degrees));
animationSet.addAnimation(AnimUtils.scaleAnim(100, 2f, 1f, 0));
animationSet.addAnimation(AnimUtils.alphaAnim(0, 1, 100, 0));
animationSet.addAnimation(AnimUtils.scaleAnim(500, 1f, 1.8f, 300));
animationSet.addAnimation(AnimUtils.alphaAnim(1f, 0, 500, 300));
animationSet.addAnimation(AnimUtils.translationAnim(500, 0, 0, 0, -400, 300));
animationSet.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
new Handler().post(new Runnable() {
public void run() {
removeView(imageView);
}
});
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
imageView.startAnimation(animationSet);
}
}
所需动画工具类代码,这里都是用的补间动画。
public class AnimUtils {
/**
* 以中心缩放动画
*
* @param from
* @param to
*/
public static ScaleAnimation scaleAnim(long time, float from, float to, long offsetTime) {
ScaleAnimation scaleAnimation = new ScaleAnimation(from, to, from, to,
Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
scaleAnimation.setStartOffset(offsetTime);
scaleAnimation.setInterpolator(new DecelerateInterpolator());
scaleAnimation.setDuration(time);
return scaleAnimation;
}
/**
* 旋转动画
*
* @param time
*/
public static RotateAnimation rotateAnim(long time, int fromDegrees, float toDegrees) {
RotateAnimation rotateAnimation = new RotateAnimation(fromDegrees, toDegrees,
Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
rotateAnimation.setDuration(time);
return rotateAnimation;
}
/**
* 移动动画
*
* @param fromX
* @param toX
* @param fromY
* @param toY
*/
public static TranslateAnimation translationAnim(long time, float fromX, float toX, float fromY, float toY, long offsetTime) {
TranslateAnimation anim = new TranslateAnimation(fromX, toX, fromY, toY);
anim.setDuration(time);
anim.setInterpolator(new DecelerateInterpolator());
anim.setStartOffset(offsetTime);
return anim;
}
/**
* 透明度动画
*
* @param fromAlpha
* @param toAlpha
* @param duration
*/
public static AlphaAnimation alphaAnim(float fromAlpha, float toAlpha, long duration, long offsetTime) {
AlphaAnimation anim = new AlphaAnimation(fromAlpha, toAlpha);
anim.setDuration(duration);
anim.setStartOffset(offsetTime);
return anim;
}
}
html5点赞仿抖音,仿抖音之——点赞动画相关推荐
- 仿抖音 APP 视频切换和点赞效果
code小生 一个专注大前端领域的技术平台公众号回复Android加入安卓技术群 作者:Yun丶Lei 链接:https://www.jianshu.com/p/c43c75303174 声明:本文已 ...
- 推荐 9 个 GitHub 上练手项目(在线考试、仿美团、仿抖音、仿B站、仿头条...)
GitHub项目推荐 推荐的这几个 GitHub 项目并不是简单的 XX 管理系统,我会从下面这些方向推荐几个入门级别但是不那么 Low 的项目. "我自己是一名从事了6年web前端开发的老 ...
- 快抖创客丨抖音怎么带货?抖音带货有什么标准?
抖音的玩法,并不是表面看到那么简单.当大部分人把抖音当做娱乐时,已经有勇者在研究抖音上有哪些变现的商业模式,什么产品适合抖音?做抖音都需要投入什么? 快抖创客,是国内首家以"短视频红人对接. ...
- 原来“抖商大会”和抖音没有关系!抖音起诉“抖商大会”主办方 索赔300万
近年来,随着抖音等一系列短视频软件在全国范围内的火爆,带动了全民短视频的风潮.抖音还进军了海外,在海外市场也有不小的影响力,给今日头条打了一场漂亮的胜仗,也是字节跳动最为成功的产品之一. 图片来源于网 ...
- 一台服务器控制上百个抖音账号,怎么批量管理上百个抖音,抖音mcn一键高效运营软件...
原标题:怎么批量管理上百个抖音,抖音mcn一键高效运营软件 易媒助手:文章.短视频同时分发软件 正因为憧憬收获更喜人的广告分成,通常个人选择性注册秒拍.皮皮虾等10多个热门内容平台,如果你们只同步文章 ...
- 抖音企业号抖音智能营销系统源码待开发技术。。。。。
抖音企业号抖音智能营销系统源码待开发技术:Symbol值通过Symbol函数生成.这就是说,对象的属性名现在可以有两种类型,一种是原来就有的字符串,另一种就是新增的Symbol类型.凡是属性名属于Sy ...
- 学计算机音视频教程,抖音短视频VIP教程全套合集
目录: 第01章-认知篇 01-抖音引流和变现的价值所在.mp4 02-抖音平台分析和人群分析.mp4 03-抖音流量人群的带货购买力分析.mp4 04-抖音经典营销 爆款打造案例分析.mp4 05- ...
- python爬虫抖音音浪_爬虫抖音_抖音淘宝联盟入驻条件
如果你刚开始操作抖音,运营抖音还不懂平台的操作技巧,可以加我的微信:422591055 带你玩转抖音自媒体平台,我还联合了抖音运营的几位大佬,每日分享免费的抖音运营的实操讲解,还可以免费获取到抖音运营 ...
- 抖音获取抖音商品原数据 API 返回值说明
今天分享的是抖音获取抖音商品原数据 API 返回值说明: item_get_app-获取抖音商品原数据 [查看演示] onebound.douyin.item_get_app 公共参数: 注册链接(获 ...
- 今日分享主题:关于抖音上抖币充值的介绍
抖音是目前最受欢迎的短视频平台之一,在这个平台上,你可以欣赏到各种类型的视频,从搞笑到音乐,从美妆到美食,从萌宠到旅游,都有大量的视频内容供用户欣赏. 在抖音上,抖币是一种虚拟货币,用户可以用它来购买 ...
最新文章
- LSGO代码小组第18周复盘日志
- caffe这个c++工程的目录结构
- Numpy、TensorFlow和Keras函数输入参数axis理解
- Linux - Red Hat 7.3 介绍安装
- 解决 TortoiseGit 诡异的 Bad file number 问题(转)
- 互联网从业者平均年薪19万,程序员最高!
- mysql外键依靠主键_mysql设置外键(主键依赖)
- centos7 安装mysql8_CentOS7中安装MySQL8.0.21爬坑记录
- Java虚拟机工作原理详解 (一)
- 【中间件技术】软件构件与中间件技术学习与实践系列文章汇总目录(持续更新中)
- office 论文 页码_毕业论文页码格式word操作
- video标签使用controls属性怎么去掉三个点
- [计算机网络】【网络设备】虚拟局域网
- “遛狗不牵绳-违法”--遛狗不牵绳识别检测 助力智慧城市犬类管理
- 神码ai人工智能写作机器人_机器学习和人工智能最佳书籍
- 贪婪洞窟2一直显示连接服务器失败,贪婪洞窟2公测服务器应急情况处理公告
- STL容器之数据结构图解
- 曲面的渐近方向和共轭方向、主方向、曲率线网
- Win10桌面图标无法拖动
- 华为弃用京东方的背后,国产柔性屏行业必须靠技术突围
热门文章
- 【未知攻焉知防】如何利用旁注渗透入侵服务器站点
- 神奇旋转,告诉我她是顺时针还是逆时针旋转
- 架构师素养及从小菜进阶架构(CTO)的书籍【转】
- mysql设置安全卡住了_MySQL数据库安全设置与注意事项小结
- 2021年前装首破5万辆 AR HUD“棋逢对手”,竞逐量产桂冠
- 辰视携3D机器视觉技术亮相第九届中国电子信息博览会
- ArcGIS api for javascript——查找任务-在地图上查找要素
- 拜占庭将军问题与PBFT算法和POW共识
- Oracle两者同时满足,【判断题】逻辑或(OR)当多个条件同时满足时结果为真。
- Flutter 手写板 签名