最近再做一个教育类的项目。在做一些学习工具的时候,美工提出了一些要求,大致如下:

其实实现过程也不难,大致就是对一个视图控件添加一个圆形的背景,然后该视图进行动画处理,膨胀的同时,透明度增大,收缩的同时,透明度降低。

我在例子中是使用了TextView,所以首先对TextView添加一个圆形的背景:

android:shape="oval" >

android:height="90dp"

android:width="90dp" />

android:bottom="4dip"

android:left="4dip"

android:right="4dip"

android:top="4dip" />

然后为TextView添加动画,包括调整大小的ScaleAnimation和调整透明度的AlphaAnimation。调整大小有两个部分,膨胀和收缩。在膨胀完毕后马上收缩,也就是对膨胀的动画进行监听,在onAnimationEnd()方法里面进行收缩,

// 按钮模拟心脏跳动

private void playHeartbeatAnimation(final View heartbeatView) {

AnimationSet swellAnimationSet = new AnimationSet(true);

swellAnimationSet.addAnimation(new ScaleAnimation(1.0f, 1.8f, 1.0f, 1.8f, Animation.RELATIVE_TO_SELF, 0.5f,

Animation.RELATIVE_TO_SELF, 0.5f));

swellAnimationSet.addAnimation(new AlphaAnimation(1.0f, 0.3f));

swellAnimationSet.setDuration(500);

swellAnimationSet.setInterpolator(new AccelerateInterpolator());

swellAnimationSet.setFillAfter(true);

swellAnimationSet.setAnimationListener(new AnimationListener() {

@Override

public void onAnimationStart(Animation animation) {

}

@Override

public void onAnimationRepeat(Animation animation) {

}

@Override

public void onAnimationEnd(Animation animation) {

AnimationSet shrinkAnimationSet = new AnimationSet(true);

shrinkAnimationSet.addAnimation(new ScaleAnimation(1.8f, 1.0f, 1.8f, 1.0f, Animation.RELATIVE_TO_SELF,

0.5f, Animation.RELATIVE_TO_SELF, 0.5f));

shrinkAnimationSet.addAnimation(new AlphaAnimation(0.3f, 1.0f));

shrinkAnimationSet.setDuration(1000);

shrinkAnimationSet.setInterpolator(new DecelerateInterpolator());

shrinkAnimationSet.setFillAfter(false);

heartbeatView.startAnimation(shrinkAnimationSet);// 动画结束时重新开始,实现心跳的View

}

});

heartbeatView.startAnimation(swellAnimationSet);

}

心跳的效果是要不停地膨胀和收缩,所以要开一个线程来处理,每当收缩完毕后重新膨胀。

private class HeatbeatThread extends Thread {

public void run() {

try {

sleep(100);

} catch (InterruptedException e1) {

e1.printStackTrace();

}

while (true) {

runOnUiThread(new Runnable() {

public void run() {

for (View view : heartbeatViews) {

playHeartbeatAnimation(view);

}

}

});

try {

Thread.sleep(1500);

} catch (InterruptedException e) {

e.printStackTrace();

}

}

};

}

最后和Activity的生命周期结合,对线程进行开始和结束。

private Thread heartbeatThread;

/**

* 开始心跳

*/

private void startHeartBeat() {

if (heartbeatThread == null) {

heartbeatThread = new HeatbeatThread();

}

if (!heartbeatThread.isAlive()) {

heartbeatThread.start();

}

}

/**

* 停止心跳

*/

private void stopHeartBeat() {

if (heartbeatThread != null && heartbeatThread.isInterrupted()) {

heartbeatThread.interrupt();

heartbeatThread = null;

System.gc();

}

}

@Override

protected void onResume() {

super.onResume();

startHeartBeat();

}

@Override

protected void onPause() {

super.onPause();

stopHeartBeat();

}

原文:http://blog.csdn.net/u014375869/article/details/46638061

android 心跳效果动画,Android实现心跳的效果相关推荐

  1. android 仿qq录音动画,Android实现QQ点赞效果动画 Android动画

    版权声明:本文为代码部落原创文章,转载请注明出处. 前言 点赞是现在社交app中比较常用的功能,一个小小的点赞按钮如果能加上一些有趣动画,一来告诉用户你已经点了赞(这是对一些手残党极大的福音),二来人 ...

  2. android 心跳效果动画,Android 心跳动画

    直接上代码  MainActivity public class MainActivity extends AppCompatActivity { private ImageView ivHart; ...

  3. android 自定义帧动画,Android 自定义方式实现帧动画效果

    前言 首先说下为啥要通过自定义处理的方式去实现Android的帧动画效果,因为通过系统原生支持的xml和java代码这两种方式实现,在播放的图片量很多时,会出现内存溢出,此现象也是在做项目当中有遇到, ...

  4. android 仿搜索动画,Android仿京东顶部搜索框滑动伸缩动画效果

    最近使用京东发现,京东顶部的搜索框有一个新的伸缩效果,根据用户的手势滑动,伸缩搜索框.觉得效果还不错,就看了下其他的应用有没有这种伸缩的效果,发现安居客也使用了类似的一种效果,然后就想着实现这样的一种 ...

  5. android 实现冒泡动画,android 触摸事件冒泡动画效果

    原图魔法效果:(透明的有些看不清) PS之后加了背景色并放大后的效果 在屏幕中的效果(左上很小的那个,其他都是背景图): 中间很小的那个就是 先看动画实现代码explosion.xml(explosi ...

  6. android 自定义园动画,Android 自定View实现仿QQ运动步数圆弧及动画效果

    在之前的Android超精准计步器开发-Dylan计步中的首页用到了一个自定义控件,和QQ运动的界面有点类似,还有动画效果,下面就来讲一下这个View是如何绘制的. 1.先看效果图 2.效果图分析 功 ...

  7. android编程xml动画,Android中xml设置Animation动画效果详解

    在Android中,Animation动画效果的实现可以通过两种方式进行实现,一种是tweened animation渐变动画,另一种是frame by frame animation画面转换动画. ...

  8. android 开红包动画,Android实现红包雨动画效果

    本文介绍了Android实现红包雨动画效果,分享给大家,希望对大家有帮助 红包雨 关于实现上面红包雨效果步骤如下: 1.创建一个红包实体类 public class RedPacket { publi ...

  9. android 文字跳动动画,Android 仿余额宝数字跳动动画效果完整代码

    Android 仿余额宝数字跳动动画效果完整代码 发布时间:2020-08-24 06:55:30 来源:脚本之家 阅读:120 作者:曾淘 一:想都不用想的,有图有真相,看着爽了,在看下面源码 二: ...

  10. android 缩放透明动画,Android之高仿QQ6.6.0侧滑效果(背景动画、透明+沉浸式状态栏、渐变效果)...

    根据需求实现类似QQ侧滑效果,之前看到过很多实现方式通过SlidingMenu,但是既然官方推出了自己的专属控件,那么使用DrawerLayout就是不二选择.且看下文. 一.先来看看官方文档解释 D ...

最新文章

  1. openstack e版创建instance整个流程
  2. iOS toolchain based on clang for linux
  3. 简单记录一下fabric版本1.4的环境搭建,
  4. Ajax服务器响应简单实例
  5. java 数据对象_java的几种对象(PO,VO,DAO,BO,POJO)
  6. unity3D游戏开发实战原创视频讲座系列7之消消乐游戏开发
  7. colorbar的应用
  8. bzoj 4514: [Sdoi2016]数字配对(二分图+费用最大流)
  9. HCIE-RS--什么是PHB?
  10. 分治法——查找最大最小元素(C++)
  11. Win10家庭版系统无法打开相机功能解决方法
  12. 面向对象系列(二)-封装,继承,多态
  13. python排列3彩票统计
  14. 地图数据的类型及编码方法
  15. SQLServer中常用的分页查询语句
  16. 微信缓存dat怎么转图片_微信 .dat图片格式转换为.jpg
  17. 如何在visio中导入新下载的模具
  18. 员工与企业都需要专注精神
  19. 武汉 python 培训 达内
  20. 会计计算机管理和会计区别,财务会计与管理会计的八大区别

热门文章

  1. linux prelink.cache,Linux基础操作
  2. Extjs弹窗-简单文本编辑框-Ext.Msg.show
  3. Django 用 uploadify 实现图片批量上传
  4. 课时39.细线表格(理解)
  5. 爬取w3c课程—Urllib库使用
  6. 和朱晔一起复习Java并发(五):并发容器和同步器
  7. idea+maven+ssm搭建boot_crm项目遇到的问题
  8. 转载:pycharm最新版新建工程没导入本地包问题:module 'selenium.webdriver' has no attribute 'Firefox'...
  9. bzoj2144: 跳跳棋(二分/倍增)
  10. 如何通过网线连接两台电脑快速传输数据?