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);
}