如何设置进度通知图标

时间:2015-12-02 08:27:04

标签: android android-notifications android-progressbar android-notification-bar

我正在服务中构建通知进度条,方法如下:

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

它的工作正常,通知和进度条显示都很好,我想要通知中的简单进度条,这很简单,我没有问题,但我想要的是下面给出的:

我想要的是什么:

  

我希望我的通知图标应该像Google Play一样动画   商店应用程序,它动画其图标,以显示下载   进展。我也想这样做。请使用建设者告诉我   通知经理我怎么能得到这个,我看过很多教程   但他们已被弃用。

3 个答案:

答案 0 :(得分:28)

通过使用此代码,您可以显示使用动画图标下载某些文件的通知:

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

答案 1 :(得分:5)

使用以下代码创建.xml文件:

<!-- 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>

其中wheel0到5是车轮的图像。确保所有图像都在可绘制文件夹中。

将以下用户代码片段放入代码中以设置动画图标:

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

答案 2 :(得分:1)

你可以在Rushab patel的答案中制作如上所述的动画列表,但是如果你使用最新的api并且你正在瞄准新的sdk可能会有问题。

因此以下这一行将过时并弃用

  

通知通知=新通知(R.drawable.wheelAnim,   null,System.currentTimeMillis());

在编码通知中太糟糕了,我必须按照你上面所描述的那样建议你使用通知构建器,因此我建议你直接在通知构建器中使用这个动画列表drawable。

来自您的代码段

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