android 下載時狀態欄及通知欄中的下載動畫
在下載APK時,看到通知欄和狀態欄中一般下載的圖標都是動態的,以爲是.gif圖,結果經過試驗,.gif的圖根本就不是動態,後來通過查資料才知道,原來是RemoteViews不支持,後來經過朋友的提示,用了幀動畫的方式替代了gif動態圖,結果就是動態下載圖了,不多說,看下代碼:
1.首先在開啓下載線程前初始化一些資源
/**
* 初始化通知欄狀態(此方法在開始下載APK線程前調用)
* @Title: initNotification
* @Description:
* @throws
* @date 2015-4-29
*/
private void initNotification(){
mNotificationManager = (NotificationManager)mContext.getSystemService(mContext.NOTIFICATION_SERVICE);
//anim_statusbar_progress_download 狀態欄中的下載動畫
<span style="color:#FF0000;">mNotification=new Notification(R.drawable.anim_statusbar_progress_download, "下載", System.currentTimeMillis());</span>
mNotification.contentView=new RemoteViews(mContext.getPackageName(), R.layout.dialog_downloadprogress_layout);
mNotification.contentView.setImageViewResource(R.id.download_Gif, R.drawable.notify_download_img);
mNotification.contentView.setProgressBar(R.id.loadProgressBar, 0, 0, true);
mNotification.contentView.setViewVisibility(R.id.loadProgressBar, View.VISIBLE);
mNotificationManager.notify(0, mNotification);
updateDownloadAnim();
}
2.啓動個線程,輪詢設置ImageView的背景,形成動畫 /**
* 通知欄動態中左側的下載圖標動畫
* @Title: updateDownloadAnim
* @Description: TODO(這裏用一句話描述這個方法的作用)
* @throws
* @date 2015-5-7
*/
private void updateDownloadAnim(){
new Thread(new Runnable() {
@Override
public void run() {
while(!isDownloadComplet){
if(downloadCount>4) downloadCount=0;
downloadAnimation(downloadCount);
downloadCount++;
try {
Thread.sleep(200);
} catch (InterruptedException e) {
}
}
}
}).start();
}
3.根據線程中的選中圖片,設置通知欄中的ImageView的圖標,刷新通知,從而顯示出類似於動畫的效果
/**
* 通知欄中的下載圖標動畫
* @Title: downloadAnimation
* @Description:
* @param count
* @throws
* @date 2015-5-7
*/
private void downloadAnimation(int count){
int[] res=new int[]{R.drawable.notify_download_img1,R.drawable.notify_download_img2,R.drawable.notify_download_img3,R.drawable.notify_download_img4,R.drawable.notify_download_img5};
mNotification.contentView.setImageViewResource(R.id.download_Gif, res[count]);
<span style="color:#FF0000;">mNotificationManager.notify(0, mNotification);
}