5

I am building the notification progress bar in Service in such a way that is given below :

private NotificationManager mNotifyManager; private NotificationCompat.Builder mBuilder; mBuilder = new NotificationCompat.Builder(DownloadService.this) .setSmallIcon(R.drawable.download) .setContentTitle("MayUp") .setContentText("Downloading new tools") .setTicker("Downloading in progress"); mBuilder.setAutoCancel(true); Intent targetIntent = new Intent(DownloadService.this, ListClass.class); TaskStackBuilder stackBuilder = TaskStackBuilder.create(DownloadService.this); // Adds the back stack for the Intent (but not the Intent itself) stackBuilder.addParentStack(MyActivity.class); // Adds the Intent that starts the Activity to the top of the stack stackBuilder.addNextIntent(targetIntent); // PendingIntent contentIntent = PendingIntent.getActivity(DownloadService.this, 0, targetIntent, PendingIntent.FLAG_UPDATE_CURRENT); // mBuilder.setContentIntent(contentIntent); PendingIntent resultPendingIntent = stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT); mBuilder.setContentIntent(resultPendingIntent); mNotifyManager.notify(1, mBuilder.build()); mBuilder.setProgress(100, 0, false); mNotifyManager.notify(1, mBuilder.build()); 

its working fine , the notification and the progress bar is showing all fine , I wanted the simple progress bar in the notification and it is the simple and I have no problem with that but what I want is given below :

What I want:

I want that My notification Icon should animate like the google play store app does, it animates its icon to show that download in progress. I want to do the same. Please tell me by using builder and notification manager How can I get this , I have seen many tutorial but they are deprecated.

2
  • As i know, Pushing notifications which have same IDs by sequencely ordered will update same notification. So you can get thet behaiver. Commented Dec 2, 2015 at 8:53
  • I am updating the progress bar under that notification , I know how to push the updates using same Id , I want to ask about how to animate the icon only Commented Dec 2, 2015 at 8:55

3 Answers 3

38

By using this code you can display a notification for downloading some files with a animated icon:

mBuilder.setContentTitle("Downloading... ") .setContentText("Please wait...") .setOngoing(true) .setOnlyAlertOnce(true) .setSmallIcon(android.R.drawable.stat_sys_download) // here is the animated icon .setLargeIcon(BitmapFactory.decodeResource(this.getResources(), android.R.drawable.stat_sys_download)).build(); 
Sign up to request clarification or add additional context in comments.

2 Comments

if any one need icon for upload , it is android.R.drawable.stat_sys_upload
@ManoharReddy OMFG you are the best bro I was looking for this so long. THANK YOU SO MUCH
7

Create .xml file with below code:

<!-- Animation frames are wheel0.png -- wheel5.png files inside the res/drawable/ folder --> <animation-list android:id="selected" android:oneshot="false"> <item android:drawable="@drawable/wheel0" android:duration="50" /> <item android:drawable="@drawable/wheel1" android:duration="50" /> <item android:drawable="@drawable/wheel2" android:duration="50" /> <item android:drawable="@drawable/wheel3" android:duration="50" /> <item android:drawable="@drawable/wheel4" android:duration="50" /> <item android:drawable="@drawable/wheel5" android:duration="50" /> </animation-list> 

Where wheel0 to 5 are the images of the wheel. Make sure all images are in your drawable folder.

User below snippet into your code to animate icon:

Notification notification = new Notification(R.drawable.wheelAnim, null, System.currentTimeMillis()); PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, new Intent(), 0); notification.flags |= Notification.FLAG_AUTO_CANCEL; notification.setLatestEventInfo(this, getText(R.string.someTitle),getText(R.string.someText), pendingIntent); ((NotificationManager) getSystemService(NOTIFICATION_SERVICE)).notify(uid, notification); 

Ref link

3 Comments

but Notification notification = new Notification(R.drawable.wheelAnim, null, System.currentTimeMillis()); is deprecated
in simple words this way of doing notification is deprecated , the encourage to use the notification builder and manager
Another way is to maintain one timer which will just update the notification icon every let's say 200 milliseconds and notify the same notification id. mBuilder.setSmallIcon(R.drawable.ic_download); mNotifyManager.notify(0, mBuilder.build());
1

you can make the animation list as described above in the answer of Rushab patel but there could be problem if you are using the newst api and if you are targetting the new sdk .

so this following line would become outdated and deprecated

Notification notification = new Notification(R.drawable.wheelAnim, null, System.currentTimeMillis());

which is too bad in coding notification , I must suggest you as you have described above that you are using notification builder , thus I would recomend you to directly use this animation list drawable in the notification builder.

from your snippet

mBuilder = new NotificationCompat.Builder(DownloadService.this) .setSmallIcon(R.drawable.youAnimationList) .setContentTitle("MayUp") .setContentText("Downloading new tools") .setTicker("Downloading in progress"); mBuilder.setAutoCancel(true); 

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.