android 状态栏及通知栏中的下载动画效果实现

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




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章