【问题标题】:Refresh progress bar in notification bar刷新通知栏中的进度条
【发布时间】:2011-02-10 23:53:46
【问题描述】:

我想在通知栏中放置一个进度条。这个想法是在程序将文件上传到服务器时显示进度条。其他一切都很好,但我不知道如何刷新通知内的进度条。有人知道可以玩什么模式吗?我的意思是,我应该在哪里刷新进度条,在服务或活动中等等。

【问题讨论】:

  • 不知道有没有可能。你试过动画 gif 吗?
  • 还没有,但我需要实时显示上传进度,所以我需要更新进度条。我认为,如果您只显示“加载”消息左右,则使用动画 gif 是有效的。无论如何,感谢您的宝贵时间。
  • 我确定它是可能的。市场应用在通知栏中下载和安装应用时显示进度条...

标签: android progress-bar notification-bar


【解决方案1】:

我不知道你的代码是什么样的,所以我不知道你需要修改什么,但是我通过文档进行了一些搜索。我在NotificationsProgressBarsRemoteViews 上找到了一些东西。

具体来说,在 RemoveView 中,您可以更新进度条。因此,结合每个链接中的一些示例代码,我得到如下内容:

public class MyActivity extends Activity {
    private static final int PROGRESS = 0x1;
    private static final int MAX_PROGRESS = 100;

    private int mProgressStatus = 0;

    private Handler mHandler = new Handler();

    protected void onCreate(Bundle icicle) {
        super.onCreate(icicle);

        //define Notification
        //...

        RemoteViews contentView = new RemoteViews(getPackageName(), R.layout.custom_notification_layout);
        contentView.setProgressBar(R.id.progress_bar, MAX_PROGRESS, mProgressStatus, false);
        notification.contentView = contentView;

        // Start file upload in a background thread
        new Thread(new Runnable() {
            public void run() {
                while (mProgressStatus < MAX_PROGRESS) {
                    mProgressStatus = doWork();

                    // Update the progress bar
                    mHandler.post(new Runnable() {
                        public void run() {
                            contentView.setProgressBar(R.id.progress_bar, MAX_PROGRESS, mProgressStatus, false);
                        }
                    });
                }
            }
        }).start();
    }
}

【讨论】:

  • 您是否必须在自定义 xml 布局中定义进度条?或者 RemoteViews.setProgressBar() 会处理这个问题。我问的原因是因为developer.android.com/reference/android/widget/…, int, int, boolean) 他们说要给出“文本应该更改的视图的 id”。
  • @Pzanno - 我想知道完全相同的事情(因此 +1)。我发现您必须在自定义 xml 布局中定义自己的进度条。
  • 很好的例子...我也在我的客户视图中使用进度条但是...它挂起我的系统我不知道为什么...默认通知进度条一切顺利
【解决方案2】:

【讨论】:

  • 事实证明,这个答案是唯一对我有用的答案,但是要阅读的信息量如此之大,以至于您无法真正将其全部放在简明的答案中。该链接指向官方文档,如果更改,请更新链接。
【解决方案3】:

要从 RemoteView 中删除 ProgressBar,请使用以下代码:-

 remoteViews.setViewVisibility(R.id.progressBar, View.INVISIBLE);

你也可以使用View.GONE,但这会让安卓填补空白。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多