Android如何自定义View实现抖音飘动红心效果

发布时间:2020-07-21 17:19:13

来源:亿速云

阅读:75

作者:小猪

小编这次要给大家分享的是Android如何自定义View实现抖音飘动红心效果,文章内容丰富,感兴趣的小伙伴可以来了解一下,希望大家阅读完这篇文章之后能够有所收获。

自定义View——抖音飘动红心

效果展示

动画效果

使用自定义view完成红心飘动效果

View实现动画:属性动画(位移+缩放+透明度+旋转)

+

随机数:(属性动画参数+颜色选取)

View

/**

* 飘心效果

* 1.创建ImageView

* 2.ImageView执行组合动画

* 3.动画执行完成后销毁View

*/

public class FlyHeartView extends RelativeLayout {

private int defoutWidth = 200;//默认控件宽度

private long mDuration = 3000;//默认动画时间

//颜色集合 从中获取颜色

private int[] color = {

0xFFFF34B3, 0xFF9ACD32, 0xFF9400D3, 0xFFEE9A00,

0xFFFFB6C1, 0xFFDA70D6, 0xFF8B008B, 0xFF4B0082,

0xFF483D8B, 0xFF1E90FF, 0xFF00BFFF, 0xFF00FF7F

};

public FlyHeartView(Context context) {

super(context);

initFrameLayout();

}

public FlyHeartView(Context context, AttributeSet attrs) {

super(context, attrs);

initFrameLayout();

}

private void initFrameLayout() {

ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(defoutWidth, ViewGroup.LayoutParams.WRAP_CONTENT);

setLayoutParams(params);

}

/**

* 创建一个心形的view视图

*/

private ImageView createHeartView() {

ImageView heartIv = new ImageView(getContext());

LayoutParams params = new LayoutParams(defoutWidth / 2, defoutWidth / 2);

//控件位置

params.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);

params.addRule(RelativeLayout.CENTER_HORIZONTAL);

heartIv.setLayoutParams(params);

heartIv.setImageResource(R.mipmap.ic_heart);

//改变颜色

heartIv.setImageTintList(ColorStateList.valueOf(color[(int) (color.length * Math.random())]));

return heartIv;

}

/**

* 执行动画

* 在展示调用该方法

*/

public void startFly() {

final ImageView heartIv = createHeartView();

addView(heartIv);

AnimatorSet animatorSet = new AnimatorSet();

animatorSet.play(createTranslationX(heartIv))

.with(createTranslationY(heartIv))

.with(createScale(heartIv))

.with(createRotation(heartIv))

.with(createAlpha(heartIv));

//执行动画

animatorSet.start();

//销毁view

animatorSet.addListener(new AnimatorListenerAdapter() {

@Override

public void onAnimationEnd(Animator animation) {

super.onAnimationEnd(animation);

removeView(heartIv);

}

});

}

/**

* 横向正弦位移动画

*

* @return

*/

private Animator createTranslationX(View view) {

ObjectAnimator animator = ObjectAnimator.ofFloat(view, "translationX", 0, (float) (defoutWidth * Math.random() / 4));

animator.setDuration(mDuration);

//CycleInterpolator cycles 正弦曲线数

animator.setInterpolator(new CycleInterpolator((float) (3 * Math.random())));

return animator;

}

/**

* 纵向加速位移动画

*

* @return

*/

private Animator createTranslationY(View view) {

ObjectAnimator animator = ObjectAnimator.ofFloat(view, "translationY", 0, -1000);

animator.setDuration(mDuration);

animator.setInterpolator(new AccelerateInterpolator());

return animator;

}

/**

* 加速放大动画

*

* @return

*/

private Animator createScale(View view) {

ObjectAnimator animatorX = ObjectAnimator.ofFloat(view, "scaleX", 1, 1.5f);

ObjectAnimator animatorY = ObjectAnimator.ofFloat(view, "scaleY", 1, 1.5f);

AnimatorSet animatorSet = new AnimatorSet();

animatorSet.setDuration(mDuration);

animatorSet.setInterpolator(new AccelerateInterpolator());

animatorSet.play(animatorX).with(animatorY);

return animatorSet;

}

/**

* 透明度动画

*

* @return

*/

private Animator createAlpha(View view) {

ObjectAnimator animator = ObjectAnimator.ofFloat(view, "alpha", 1, 0.1f);

animator.setDuration(mDuration);

animator.setInterpolator(new AccelerateInterpolator());

return animator;

}

/**

* 旋转动画

*

* @return

*/

private Animator createRotation(View view) {

ObjectAnimator animator = ObjectAnimator.ofFloat(view, "rotation", 0, (float) (25f * Math.random()));

animator.setDuration(mDuration);

animator.setInterpolator(new CycleInterpolator((float) (6 * Math.random())));

return animator;

}

}

最后在MainActivity中调用FlyHeartView 的startFly()方法就能实现点击飘心效果。

看完这篇关于Android如何自定义View实现抖音飘动红心效果的文章,如果觉得文章内容写得不错的话,可以把它分享出去给更多人看到。

android 向上飘的字符,Android如何自定义View实现抖音飘动红心效果相关推荐

  1. Android 抖音爱心动画,Android自定义View实现抖音飘动红心效果

    本文实例为大家分享了Android自定义View实现抖音飘动红心效果的具体代码,供大家参考,具体内容如下 自定义View--抖音飘动红心 效果展示 动画效果 使用自定义view完成红心飘动效果 Vie ...

  2. android 自定义红心,Android自定义View实现抖音飘动红心效果

    本文实例为大家分享了Android自定义View实现抖音飘动红心效果的具体代码,供大家参考,具体内容如下 自定义View--抖音飘动红心 效果展示 动画效果 使用自定义view完成红心飘动效果 Vie ...

  3. 自定义View:仿抖音直播点赞效果

    目录 一.效果图 1.第一版本:在屏幕底部开始显示 2.第二版本:点击任意位置都可以显示 3.第三版本:给任意控件添加点赞效果 二.代码 1.第一版本代码 源码: 示例: 2.第二版本代码 源码(主要 ...

  4. 【自定义View】抖音网红文字时钟-上篇

    源码地址 抖音网红文字时钟-TextClockView 起源 周末在家刷抖音的时候看到了这款网红时钟,都是Android平台的,想来何不自己实现一把.看抖音里大家发的视频,这款时钟基本分两类,一类是展 ...

  5. 自定义View实现车载音场设置效果

    本文阅读大约十分钟 此文章来源于星友的提问,关于自定义View一个车机上的音场效果设置,星球提问是免费的,感谢老哥赞赏的鸡腿~,写文章不易,分析原理到实现效果也是要花费一些时间和精力,不过大家加入星球 ...

  6. android代码实现手机加速功能,Android自定义View实现内存清理加速球效果

    Android自定义View实现内存清理加速球效果 发布时间:2020-09-21 22:21:57 来源:脚本之家 阅读:105 作者:程序员的自我反思 前言 用过猎豹清理大师或者相类似的安全软件, ...

  7. Android 自定义View之边缘凹凸的优惠券效果

    本篇文章讲的是自定义View之边缘凹凸的优惠券效果,之前有见过很多优惠券的效果都是使用了边缘凹凸的样式.和往常一样,主要总结一下在自定义View的开发过程中需要注意的一些地方. 按照惯例,我们先来看看 ...

  8. android自定义radiogroup,Android 自定义View实现任意布局的RadioGroup效果

    前言 RadioGroup是继承LinearLayout,只支持横向或者竖向两种布局.所以在某些情况,比如多行多列布局,RadioGroup就并不适用 . 本篇文章通过继承RelativeLayout ...

  9. Android仿抖音我的页面,Android自定义videoview仿抖音界面

    本文实例为大家分享了Android自定义videoview仿抖音界面的具体代码,供大家参考,具体内容如下 1.效果图 和抖音的界面效果一模一样,而且可以自定义,需要什么页面,请自己定义 2.自定义vi ...

  10. Android绘制竖直虚线完美解决方案—自定义View

    Android绘制竖直虚线完美解决方案-自定义View 开发中我们经常会遇到绘制虚线的需求,一般我们使用一个drawable文件即可实现,下面我会先列举常规drawable文件的实现方式. 使用dra ...

最新文章

  1. 交换器无法根据自身类型和路由键找到符合条件队列时,有哪些处理?
  2. WINCE 开机自动弹USB连接窗口问题(已解决)
  3. 跨链(2)跨链技术“分布式私钥控制”
  4. android NDK 在Ubuntu10.04开发环境的搭建
  5. CTF-不一样的凯撒密码
  6. plsql(轻量版)_基本语法
  7. linux postfix 日志,linux – 如何计算Postfix的mailq的消息?
  8. iOS下载大型文件原理解析三
  9. [译]RabbitMQ教程C#版 - 远程过程调用(RPC)
  10. 软件设计开发笔记1:基于状态机的程序设计
  11. linux查看文件位置命令bwd,linux 操作系统中find文件搜索命令的使用
  12. 线上系统因为一个ThreadLocal直接内存飙升
  13. 排序(2):直接插入排序
  14. Android中利用LinearLayout动态添加控件
  15. 关于营造团队良好氛围的讨论
  16. 【PDF】PDF文件分页拆分(免费方法)
  17. SqlServer导出为mdf
  18. 百度指数和股票的相关性
  19. The Fewest Coins(多重背包+完全背包)
  20. among us私服搭建

热门文章

  1. Python元类---道生一,一生二,二生三
  2. Panda3D双面渲染和3D法线的概念学习
  3. three.js 场景编辑器 源码解析(六)
  4. busybox制作的rootfs,启动脚本修改定制
  5. 分享优秀品牌平面广告创意作品的创意密码
  6. 思腾合力-SCM集群下载镜像步骤
  7. 百度 linux格式c盘指令,Dos指令直接将gho文件还原到C盘的指令怎么写
  8. kotlinx.serialization处理Json解析
  9. sof_pof_jic_elf程序下载方法
  10. 2010中国移动开发者大会21日开幕 揭密五大亮