哈喽,哈喽! 大家好~ 小泽老师! 哈哈哈 今天 研究了一下ImageView的闪烁动画。
控件闪烁,其实就是控制控件的透明度,从可见到逐渐不可见,再逐渐到可见,一直反复。
因此,要想实现控件闪烁,只需要使用android中的alpha动画即可。
开启闪烁,代码如下:
// 0.1f 和 1.0f 表示 从透明度为 0.1f 开始 到 1.0f 进行变化
AlphaAnimation alphaAnimation1 = new AlphaAnimation(0.1f, 1.0f);
// 设置动画300毫秒
alphaAnimation1.setDuration(300);
// 表示重复多次。 也可以设定具体重复的次数,比如alphaAnimation1.setRepeatCount(5);
alphaAnimation1.setRepeatCount(Animation.INFINITE);
// 表示动画结束后,反过来再执行。
// 该方法有两种值, RESTART 和 REVERSE。
// RESTART表示从头开始,REVERSE表示从末尾倒播。
alphaAnimation1.setRepeatMode(Animation.REVERSE);
// 给 ImageView 设置动画
ivAnimation.setAnimation(alphaAnimation1);
ok~! 此上就是 百度上都能查到的设置闪烁的动画效果的代码。
但是我今天遇到了一个问题 想用 OnClickListener 控制是否 闪烁 和 不闪烁
此上代码 不知道是我写的有问题 还是什么其他问题,动画失效了。
然后又百度研究了一下 发现有一个 ObjectAnimator
附上代码:?
ObjectAnimator alphaAnimation1 = ObjectAnimator.ofFloat(ivAnimation,"alpha",0.1f,1f);
alphaAnimation1.setRepeatCount(ValueAnimator.INFINITE);
alphaAnimation1.setRepeatMode(ValueAnimator.REVERSE);
alphaAnimation1.setDuration(300);
此上代码 是初始化 动画。因上面已经有注释了 本代码不进行注释。
然后就是 OnClickListener 的代码了?
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.default:
animationState();
// 默认状态 透明度为0f
ivAnimation.setAlpha(0f);
break;
case R.id.loding:
if (alphaAnimation1 == null) {
break;
}
if (alphaAnimation1.isRunning()){
break;
}else {
alphaAnimation1.start();
}
break;
case R.id.end:
animationState();
// 连接成功状态 透明度为1f
ivAnimation.setAlpha(1.0f);
break;
default:
break;
}
}
animationState()方法中 代码:?
private void animationState() {
if(alphaAnimation1 !=null && alphaAnimation1.isRunning()){
alphaAnimation1.cancel();
}
}
ok 然后运行就好用了 希望对你们有所帮助。