Android呼吸灯效果实现
最近需要做一个搜索动画的呼吸灯效果,在网上查了下有以下两种实现方式,现记录下来。
实现呼吸灯效果本质上都是使用ImageView动画,实现alpha值变化。
第一种方式,直接使用动画实现,代码如下:
private final int BREATH_INTERVAL_TIME = 1000; //设置呼吸灯时间间隔
private AlphaAnimation animationFadeIn;
private AlphaAnimation animationFadeOut;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mode_select_layout);
breathImageView = (ImageView)findViewById(R.id.breathImageView);
animationFadeIn = new AlphaAnimation(0.1f, 1.0f);
animationFadeIn.setDuration(BREATH_INTERVAL_TIME);
// animationFadeIn.setStartOffset(100);
animationFadeOut = new AlphaAnimation(1.0f, 0.1f);
animationFadeOut.setDuration(BREATH_INTERVAL_TIME);
// animationFadeIn.setStartOffset(100);
animationFadeIn.setAnimationListener(new Animation.AnimationListener(){
@Override
public void onAnimationEnd(Animation arg0) {
breathImageView.startAnimation(animationFadeOut);
}
@Override
public void onAnimationRepeat(Animation arg0) {
// TODO Auto-generated method stub
}
@Override
public void onAnimationStart(Animation arg0) {
// TODO Auto-generated method stub
}
});
animationFadeOut.setAnimationListener(new Animation.AnimationListener(){
@Override
public void onAnimationEnd(Animation arg0) {
breathImageView.startAnimation(animationFadeIn);
}
@Override
public void onAnimationRepeat(Animation arg0) {
// TODO Auto-generated method stub
}
@Override
public void onAnimationStart(Animation arg0) {
// TODO Auto-generated method stub
}
});
breathImageView.startAnimation(animationFadeOut);
}
第二种方式,使用timer实现,代码如下:
增加动画alpha_fade_in.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:fillAfter="true"
android:fillEnabled="true" >
<alpha
android:duration="1500"
android:fromAlpha="0.0"
android:toAlpha="1.0" />
</set>
alpha_fade_out.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:fillAfter="true"
android:fillEnabled="true" >
<alpha
android:duration="1500"
android:fromAlpha="0.0"
android:toAlpha="1.0" />
</set>
Activity中代码:
private ImageView breathImageView;
private Timer timer;
private boolean isOpen = true;
private int index = 0;
private final int BREATH_INTERVAL_TIME = 1000; //设置呼吸灯时间间隔
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mode_select_layout);
breathImageView = (ImageView)findViewById(R.id.breathImageView);
startTimer();
}
public Handler handler = new Handler() {
public void handleMessage(Message msg) {
switch (msg.what) {
case 1:
breathImageView.clearAnimation();
breathImageView.setAnimation(getFadeIn());
break;
case 2:
breathImageView.clearAnimation();
breathImageView.setAnimation(getFadeOut());
break;
}
super.handleMessage(msg);
}
};
private Animation getFadeIn() {
Animation fadeIn = AnimationUtils.loadAnimation(ModeSelectPage.this,
R.anim.alpha_fade_in);
fadeIn.setDuration(BREATH_INTERVAL_TIME);
fadeIn.setStartOffset(100);
return fadeIn;
}
private Animation getFadeOut() {
Animation fadeOut = AnimationUtils.loadAnimation(ModeSelectPage.this,
R.anim.alpha_fade_out);
fadeOut.setDuration(BREATH_INTERVAL_TIME);
fadeOut.setStartOffset(100);
return fadeOut;
}
private void startTimer() {
timer = new Timer(true);
TimerTask task = new TimerTask() {
@Override
public void run() {
if (isOpen) {
if (index == 2) {
index = 0;
}
index++;
Message message = new Message();
message.what = index;
handler.sendMessage(message);
}
}
};
timer.schedule(task, 0, BREATH_INTERVAL_TIME); // 延时0ms后执行,5000ms执行一次
}
@Override
protected void onDestroy() {
isOpen = false;
if (timer != null) {
timer.cancel();// 退出计时器
}
timer = null;
super.onDestroy();
}
Android呼吸灯效果实现的更多相关文章
- Android 呼吸灯流程分析
一.Android呼吸灯Driver实现 1.注册驱动 代码位置:mediatek/kernel/drivers/leds/leds_drv.c 602static struct platform_d ...
- ZYNQ自定义AXI总线IP应用——PWM实现呼吸灯效果
一.前言 在实时性要求较高的场合中,CPU软件执行的方式显然不能满足需求,这时需要硬件逻辑实现部分功能.要想使自定义IP核被CPU访问,就必须带有总线接口.ZYNQ采用AXI BUS实现PS和PL之间 ...
- CSS动画总结与呼吸灯效果
首先,先介绍一下主要用到的css属性:animation,text-shadow. text-shadow就不再介绍了,上一篇已经详细介绍了用法.这里先介绍一下animation属性. 1.anima ...
- Android呼吸灯添加
平台:mtk 一.hal层入口 Lights.c (vendor\mediatek\proprietary\hardware\liblights) char const*const RE ...
- 好玩的WPF第二弹:电子表字体显示时间+多彩呼吸灯特效button
我们先来看看Quartz MS字体动态显示系统时间的效果,难度相较于上一篇也要简单很多. 首先是定义一个TextBlock例如以下. <Grid> <TextBlock Name=& ...
- 【转】Android中通知的提示音、震动和LED灯效果小例子
通知(Notification)是 Android 系统中比较有特色的一个功能,当某个应用程序希望向用户发出一些提示信息,而该应用程序又不在前台运行时,就可以借助通知来实现.发出一条通知后,手机最上方 ...
- 浅浅的分析LED呼吸灯的实现和PWM的关系
前言 在本周,我们在python课上做了一个实验,用ARDUINO使小LED灯模仿出呼吸灯的效果,实验进行的很成功,但是机器当仅输出高/低电平的时候是怎么样才能做到渐亮渐暗(输出电压)的变化呢?在这里 ...
- STM32呼吸灯
使用STM32开发板和mbed平台实现的一个呼吸灯.材料,LED灯,电阻,STM32开发板. 先上一张效果图. 背景: 我们之前设置GPIO口使用了DigitalOut,数字信号输出.只能是GPIO口 ...
- (原创)用Verilog实现一个参数化的呼吸灯(Verilog,CPLD/FPGA)
1.Abstract 观察到一个有趣的现象,每当把Apple笔记本合上的时候,那个白色的呼吸灯就会反复地由暗渐明,然后又由明渐暗,乍一看就像Apple笔记本在打盹休息一样,十分可爱!于是突发奇 ...
随机推荐
- 接口文档管理系统mindoc安装手册
硬件: centos6.9-64 mysql5.6 首先确保系统安装gcc套件 yum -y gcc 第一步,安装mysql(如果不会在Linux安装mysql,请看下面文章) http://www. ...
- PAT 乙级 1029 旧键盘(20) C++版
1029. 旧键盘(20) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 旧键盘上坏了几个键,于是在敲一段文字的 ...
- Java NIO系列教程(十一) Pipe
Java NIO 管道是2个线程之间的单向数据连接.Pipe有一个source通道和一个sink通道.数据会被写到sink通道,从source通道读取. 这里是Pipe原理的图示: 创建管道 通过Pi ...
- Hive - ORC 文件存储格式【转】
一.ORC File文件结构 ORC的全称是(Optimized Row Columnar),ORC文件格式是一种Hadoop生态圈中的列式存储格式,它的产生早在2013年初,最初产生自Apache ...
- STP RSTP
一.透明网桥 1.对于一般的透明网桥来说,通常都具有以下的特点: +拓展LAN的能力 +自主动态学习站点的地址信息 当网桥的某个端口上收到含有某个源MAC地址的数据帧时,它就把该MAC地址和接收该数据 ...
- Dom操作的常用案例实现
本文介绍几个Dom操作的几个常用的案例.虽然现在各种web框架层出不穷,也很方便.但是了解最基本的实现方法对我们开发还是有很大的帮助的: 1.图片滚动案例 1.1 效果如下: 1.2 代码如下: ...
- [UE4]图片按钮设置技巧
- [UE4]保存游戏数据
新建一个继承自“SaveGame”的蓝图.
- 第七章 :分布式监控与SNMP监控
7.1 分布式监控 7.1.1 作用 分担压力,减轻负载 多机房监控 zabbix Server ===> zabbix agent (只能同一个局域网监控) 分担压力,降低负载 zabbi ...
- MySQL 之管理脚本
Mysql中查看每个IP的连接数 ) as ip , count(*) from information_schema.processlist group by ip;