Android呼吸灯效果两种实现
来源:互联网 发布:mac系统idea下载git 编辑:程序博客网 时间:2024/04/28 23:16
最近项目要做个呼吸灯实现,有两种方式,实现呼吸灯效果本质上都是使用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; //设置呼吸灯时间间隔@Overridepublic 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执行一次}@Overrideprotected void onDestroy() { isOpen = false; if (timer != null) { timer.cancel();// 退出计时器 } timer = null; super.onDestroy();}
0 0
- Android呼吸灯效果两种实现
- Android 按钮呼吸灯效果
- 通过ValueAnimator实现呼吸灯效果
- 安卓 呼吸灯效果--代码实现
- 呼吸灯 效果
- 呼吸灯效果
- 呼吸灯效果动画
- timer实现的呼吸灯效果——初步
- Android TestView实现跑马灯效果的两种方法
- Android TextView实现跑马灯效果的两种方式
- 按钮添加呼吸灯效果
- 呼吸灯的实现
- SVG animate实现呼吸闪烁效果
- 【Android控件】呼吸效果的动画
- android 自定义动画 圆呼吸效果 ValueAnimator
- 跑马灯效果的两种实现
- 14 Android android 按钮效果的两种实现方法
- verilog PWM实现呼吸灯
- Hdu 1520 Anniversary party(树形DP)
- ubuntu无法上网以及无法远程登录、cuteftp无法登陆linux的解决办法
- jfinal整合Hibernate-validator校验框架
- keil编译后code,RO-data,RW-data,ZI-data含义及mcu的flash实际存储数据
- CSS控制元素定位
- Android呼吸灯效果两种实现
- linux c下的字符串正则替换
- BroadcastReceiver实现Intent的Activity跳转
- 网络配置的四大基本要素: IP + Netmask + Gateway + DNS
- EasyRTMP安卓Android手机直播之AAC采集、编码与RTMP推送
- EditText文本改变监听addTextChangedListener( )
- 放多个Activity的进入动画(转自别人的app),想留着
- linux 下使用"n"配置使用淘宝镜像
- EditText默认不获取焦点,隐藏软键盘,焦点监听,输入监听,样式设置