本文实例为大家分享了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 抖音爱心动画,Android自定义View实现抖音飘动红心效果相关推荐

  1. Android 抖音爱心动画,Android动画 - 仿抖音加载动画

    在地铁中刷抖音,由于网络不通畅加载很慢,抖音会加载一个加载动画,感觉很有意思,于是分析了一下,自己写了Demo,实现效果. 效果图 分析动画 首先分析动画,初始状态是由两个相切的圆形图案组成. 将动画 ...

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

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

  3. android播放mp3旋转动画,Android进阶之仿抖音的音乐旋转效果

    原标题:Android进阶之仿抖音的音乐旋转效果 原文:https://myml666.github.io (源码下载见文末) 这次是实现一个仿抖音的音乐旋转自定义View,先看一下效果 效果图 实现 ...

  4. Android属性动画与自定义View——实现vivo x6更新系统的动画效果

    晚上好,现在是凌晨两点半,然后我还在写代码.电脑里播放着<凌晨两点半>,晚上写代码,脑子更清醒,思路更清晰. 今天聊聊属性动画和自定义View搭配使用,前面都讲到自定义View和属性动画, ...

  5. Android 气泡动画(自定义View类)

    Android 气泡动画(自定义View类) 一.前言 二.代码 1. 随机移动的气泡 2.热水气泡 一.前言 最近有需求制作一个水壶的气泡动画,首先在网上查找了一番,找到了一个文章. https:/ ...

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

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

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

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

  8. Android仿IOS解锁密码界面-自定义view系列(6)

    Android仿IOS解锁密码界面-自定义view系列 功能简介 主要实现步骤-具体内容看github项目里的代码 xml相关属性设置 Android Studio 代码 Android技术生活交流 ...

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

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

最新文章

  1. 2022-2028年中国辉石行业市场全景调查及发展前景分析报告
  2. 细胞如何获得秩序?除了形成细胞器,还可以发生相分离
  3. php - 数组倒序
  4. 华为ac配置radius认证服务器_合作生态 | 升腾威讯云系统与华为泰山服务器完成产品互认证...
  5. 对现代C++的一点看法
  6. hdu1873 看病要排队-优先队列
  7. 人工智能技术将重塑银行业
  8. python 监视文件目录
  9. mac 更换默认蓝牙适配器_聊一聊蓝牙名字和地址的来龙去脉
  10. 编写一个Applet在屏幕上画椭圆,椭圆的大小和位置由鼠标决定
  11. sicily 1345. 能量项链
  12. 7 年零故障支撑双 11,消息中间件 RocketMQ 如何做到?
  13. arduino通过串口监视器读取一行字符
  14. 文件和数据格式化~总结
  15. Koo叔说Shader—果冻效果
  16. python用pandas读取excel_Python 中利用Pandas处理复杂的Excel数据
  17. 统计学原理 离散程度的度量
  18. 73-插入排序——直接插入排序
  19. EndNotex9学习备忘
  20. C++设计模式之二(设计模式六大原则)

热门文章

  1. EasyPR--开发详解(9)文字定位
  2. Ubuntu 安装 Gif 工具 -- Peek
  3. 一个执行计划异常变更的案例 - 外传之SQL Profile(上)
  4. 【超详细】开源JZVideo饺子播放器播放器配置使用以及其自定义
  5. 根据经纬度坐标值在百度地图上绘制轨迹
  6. 51、基于51单片机的GPS定位系统(GSM短信)
  7. Bigdata_Elasticsearch
  8. 会打字、能翻译,联想智能语音鼠标好小橙使用评测
  9. 电子元器件基础知识大全详解
  10. Tableau Prep使用