android 心跳效果动画,Android实现心跳的效果
最近再做一个教育类的项目。在做一些学习工具的时候,美工提出了一些要求,大致如下:
其实实现过程也不难,大致就是对一个视图控件添加一个圆形的背景,然后该视图进行动画处理,膨胀的同时,透明度增大,收缩的同时,透明度降低。
我在例子中是使用了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实现心跳的效果相关推荐
- android 仿qq录音动画,Android实现QQ点赞效果动画 Android动画
版权声明:本文为代码部落原创文章,转载请注明出处. 前言 点赞是现在社交app中比较常用的功能,一个小小的点赞按钮如果能加上一些有趣动画,一来告诉用户你已经点了赞(这是对一些手残党极大的福音),二来人 ...
- android 心跳效果动画,Android 心跳动画
直接上代码 MainActivity public class MainActivity extends AppCompatActivity { private ImageView ivHart; ...
- android 自定义帧动画,Android 自定义方式实现帧动画效果
前言 首先说下为啥要通过自定义处理的方式去实现Android的帧动画效果,因为通过系统原生支持的xml和java代码这两种方式实现,在播放的图片量很多时,会出现内存溢出,此现象也是在做项目当中有遇到, ...
- android 仿搜索动画,Android仿京东顶部搜索框滑动伸缩动画效果
最近使用京东发现,京东顶部的搜索框有一个新的伸缩效果,根据用户的手势滑动,伸缩搜索框.觉得效果还不错,就看了下其他的应用有没有这种伸缩的效果,发现安居客也使用了类似的一种效果,然后就想着实现这样的一种 ...
- android 实现冒泡动画,android 触摸事件冒泡动画效果
原图魔法效果:(透明的有些看不清) PS之后加了背景色并放大后的效果 在屏幕中的效果(左上很小的那个,其他都是背景图): 中间很小的那个就是 先看动画实现代码explosion.xml(explosi ...
- android 自定义园动画,Android 自定View实现仿QQ运动步数圆弧及动画效果
在之前的Android超精准计步器开发-Dylan计步中的首页用到了一个自定义控件,和QQ运动的界面有点类似,还有动画效果,下面就来讲一下这个View是如何绘制的. 1.先看效果图 2.效果图分析 功 ...
- android编程xml动画,Android中xml设置Animation动画效果详解
在Android中,Animation动画效果的实现可以通过两种方式进行实现,一种是tweened animation渐变动画,另一种是frame by frame animation画面转换动画. ...
- android 开红包动画,Android实现红包雨动画效果
本文介绍了Android实现红包雨动画效果,分享给大家,希望对大家有帮助 红包雨 关于实现上面红包雨效果步骤如下: 1.创建一个红包实体类 public class RedPacket { publi ...
- android 文字跳动动画,Android 仿余额宝数字跳动动画效果完整代码
Android 仿余额宝数字跳动动画效果完整代码 发布时间:2020-08-24 06:55:30 来源:脚本之家 阅读:120 作者:曾淘 一:想都不用想的,有图有真相,看着爽了,在看下面源码 二: ...
- android 缩放透明动画,Android之高仿QQ6.6.0侧滑效果(背景动画、透明+沉浸式状态栏、渐变效果)...
根据需求实现类似QQ侧滑效果,之前看到过很多实现方式通过SlidingMenu,但是既然官方推出了自己的专属控件,那么使用DrawerLayout就是不二选择.且看下文. 一.先来看看官方文档解释 D ...
最新文章
- openstack e版创建instance整个流程
- iOS toolchain based on clang for linux
- 简单记录一下fabric版本1.4的环境搭建,
- Ajax服务器响应简单实例
- java 数据对象_java的几种对象(PO,VO,DAO,BO,POJO)
- unity3D游戏开发实战原创视频讲座系列7之消消乐游戏开发
- colorbar的应用
- bzoj 4514: [Sdoi2016]数字配对(二分图+费用最大流)
- HCIE-RS--什么是PHB?
- 分治法——查找最大最小元素(C++)
- Win10家庭版系统无法打开相机功能解决方法
- 面向对象系列(二)-封装,继承,多态
- python排列3彩票统计
- 地图数据的类型及编码方法
- SQLServer中常用的分页查询语句
- 微信缓存dat怎么转图片_微信 .dat图片格式转换为.jpg
- 如何在visio中导入新下载的模具
- 员工与企业都需要专注精神
- 武汉 python 培训 达内
- 会计计算机管理和会计区别,财务会计与管理会计的八大区别
热门文章
- linux prelink.cache,Linux基础操作
- Extjs弹窗-简单文本编辑框-Ext.Msg.show
- Django 用 uploadify 实现图片批量上传
- 课时39.细线表格(理解)
- 爬取w3c课程—Urllib库使用
- 和朱晔一起复习Java并发(五):并发容器和同步器
- idea+maven+ssm搭建boot_crm项目遇到的问题
- 转载:pycharm最新版新建工程没导入本地包问题:module 'selenium.webdriver' has no attribute 'Firefox'...
- bzoj2144: 跳跳棋(二分/倍增)
- 如何通过网线连接两台电脑快速传输数据?