在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 決定了動畫開關。