Android AnimationDrawable动画实现icon闪烁

在Dialer的通话中进行录音时,有个record icon在一闪一闪,看了源码发现挺好玩的,现在记录一下。

代码里的写法:

      AnimationDrawable ad = (AnimationDrawable) mVoiceRecorderIcon.getDrawable();
      if (ad != null) {
          if (show && !ad.isRunning()) {
              ad.start();
          } else if (!show && ad.isRunning()) {
              ad.stop();
          }
      }

获取一个帧动画image,
其中getDrawable返回的对象就是一个drawable ,
R.drawable.voice_record_indicator

xml布局写法:

<?xml version="1.0" encoding="UTF-8"?>
<animation-list android:oneshot="false"
                xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:duration="500" android:drawable="@drawable/incall_btn_recording"/>

    <item android:duration="500">
        <shape android:shape="rectangle">
            <size android:width="@dimen/incall_record_icon_size"
                  android:height="@dimen/incall_record_icon_size"/>
            <solid android:color="#00ffffff"/>
        </shape>
    </item>
</animation-list>

这里的duration决定了显示时间间隔

然后AnimationDrawable的start和stop 就是动画开关。

效果就是开启录音后,有个小红原点在一闪一闪,也就是这里的incall_btn_recording在显示与隐藏

你可能感兴趣的:(Dialer)