我这里做的是一个仿抖音点赞的动画,监听双击事件,在双击位置添加图片,对其进行一系列的缩放、移动、旋转、透明度的动画从而达到效果。

效果图:

制作思路:

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点赞仿抖音,仿抖音之——点赞动画相关推荐

  1. 仿抖音 APP 视频切换和点赞效果

    code小生 一个专注大前端领域的技术平台公众号回复Android加入安卓技术群 作者:Yun丶Lei 链接:https://www.jianshu.com/p/c43c75303174 声明:本文已 ...

  2. 推荐 9 个 GitHub 上练手项目(在线考试、仿美团、仿抖音、仿B站、仿头条...)

    GitHub项目推荐 推荐的这几个 GitHub 项目并不是简单的 XX 管理系统,我会从下面这些方向推荐几个入门级别但是不那么 Low 的项目. "我自己是一名从事了6年web前端开发的老 ...

  3. 快抖创客丨抖音怎么带货?抖音带货有什么标准?

    抖音的玩法,并不是表面看到那么简单.当大部分人把抖音当做娱乐时,已经有勇者在研究抖音上有哪些变现的商业模式,什么产品适合抖音?做抖音都需要投入什么? 快抖创客,是国内首家以"短视频红人对接. ...

  4. 原来“抖商大会”和抖音没有关系!抖音起诉“抖商大会”主办方 索赔300万

    近年来,随着抖音等一系列短视频软件在全国范围内的火爆,带动了全民短视频的风潮.抖音还进军了海外,在海外市场也有不小的影响力,给今日头条打了一场漂亮的胜仗,也是字节跳动最为成功的产品之一. 图片来源于网 ...

  5. 一台服务器控制上百个抖音账号,怎么批量管理上百个抖音,抖音mcn一键高效运营软件...

    原标题:怎么批量管理上百个抖音,抖音mcn一键高效运营软件 易媒助手:文章.短视频同时分发软件 正因为憧憬收获更喜人的广告分成,通常个人选择性注册秒拍.皮皮虾等10多个热门内容平台,如果你们只同步文章 ...

  6. 抖音企业号抖音智能营销系统源码待开发技术。。。。。

    抖音企业号抖音智能营销系统源码待开发技术:Symbol值通过Symbol函数生成.这就是说,对象的属性名现在可以有两种类型,一种是原来就有的字符串,另一种就是新增的Symbol类型.凡是属性名属于Sy ...

  7. 学计算机音视频教程,抖音短视频VIP教程全套合集

    目录: 第01章-认知篇 01-抖音引流和变现的价值所在.mp4 02-抖音平台分析和人群分析.mp4 03-抖音流量人群的带货购买力分析.mp4 04-抖音经典营销 爆款打造案例分析.mp4 05- ...

  8. python爬虫抖音音浪_爬虫抖音_抖音淘宝联盟入驻条件

    如果你刚开始操作抖音,运营抖音还不懂平台的操作技巧,可以加我的微信:422591055 带你玩转抖音自媒体平台,我还联合了抖音运营的几位大佬,每日分享免费的抖音运营的实操讲解,还可以免费获取到抖音运营 ...

  9. 抖音获取抖音商品原数据 API 返回值说明

    今天分享的是抖音获取抖音商品原数据 API 返回值说明: item_get_app-获取抖音商品原数据 [查看演示] onebound.douyin.item_get_app 公共参数: 注册链接(获 ...

  10. 今日分享主题:关于抖音上抖币充值的介绍

    抖音是目前最受欢迎的短视频平台之一,在这个平台上,你可以欣赏到各种类型的视频,从搞笑到音乐,从美妆到美食,从萌宠到旅游,都有大量的视频内容供用户欣赏. 在抖音上,抖币是一种虚拟货币,用户可以用它来购买 ...

最新文章

  1. LSGO代码小组第18周复盘日志
  2. caffe这个c++工程的目录结构
  3. Numpy、TensorFlow和Keras函数输入参数axis理解
  4. Linux - Red Hat 7.3 介绍安装
  5. 解决 TortoiseGit 诡异的 Bad file number 问题(转)
  6. 互联网从业者平均年薪19万,程序员最高!
  7. mysql外键依靠主键_mysql设置外键(主键依赖)
  8. centos7 安装mysql8_CentOS7中安装MySQL8.0.21爬坑记录
  9. Java虚拟机工作原理详解 (一)
  10. 【中间件技术】软件构件与中间件技术学习与实践系列文章汇总目录(持续更新中)
  11. office 论文 页码_毕业论文页码格式word操作
  12. video标签使用controls属性怎么去掉三个点
  13. [计算机网络】【网络设备】虚拟局域网
  14. “遛狗不牵绳-违法”--遛狗不牵绳识别检测 助力智慧城市犬类管理
  15. 神码ai人工智能写作机器人_机器学习和人工智能最佳书籍
  16. 贪婪洞窟2一直显示连接服务器失败,贪婪洞窟2公测服务器应急情况处理公告
  17. STL容器之数据结构图解
  18. 曲面的渐近方向和共轭方向、主方向、曲率线网
  19. Win10桌面图标无法拖动
  20. 华为弃用京东方的背后,国产柔性屏行业必须靠技术突围

热门文章

  1. 【未知攻焉知防】如何利用旁注渗透入侵服务器站点
  2. 神奇旋转,告诉我她是顺时针还是逆时针旋转
  3. 架构师素养及从小菜进阶架构(CTO)的书籍【转】
  4. mysql设置安全卡住了_MySQL数据库安全设置与注意事项小结
  5. 2021年前装首破5万辆 AR HUD“棋逢对手”,竞逐量产桂冠
  6. 辰视携3D机器视觉技术亮相第九届中国电子信息博览会
  7. ArcGIS api for javascript——查找任务-在地图上查找要素
  8. 拜占庭将军问题与PBFT算法和POW共识
  9. Oracle两者同时满足,【判断题】逻辑或(OR)当多个条件同时满足时结果为真。
  10. Flutter 手写板 签名