`
l540151663
  • 浏览: 185400 次
  • 性别: Icon_minigender_1
  • 来自: 浙江
社区版块
存档分类
最新评论

Notification中更新进度条

阅读更多
有时我们在下载的时候可以在通知里看到进度条信息,我这里做了一个简单更新进度条的通知。

进度条布局如下notification.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <ImageView
        android:id="@+id/image"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent" />

    <TextView
        android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@+id/image"
        android:textColor="#FFF" />

    <ProgressBar
        android:id="@+id/progress_horizontal"
        style="?android:attr/progressBarStyleHorizontal"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/text"
        android:layout_toRightOf="@+id/image"
        android:max="100"
        android:progress="50" />

</RelativeLayout>

主要的Activity代码如下:
package com.lml.notification;

import java.util.Timer;
import java.util.TimerTask;

import android.app.Activity;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.widget.Button;
import android.widget.RemoteViews;

public class MainActivity extends Activity {

RemoteViews remoteView;
int num=0;
Timer timer;
Notification noti ;
NotificationManager mnotiManager;
MyTimerTask task;
boolean isFirst=true;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

Button sendNotiBt = (Button) findViewById(R.id.sendNotiBt);
sendNotiBt.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
showCustomizeNotification();
}
});

}

private void showCustomizeNotification() {

CharSequence title = "New Notification!";
Notification.Builder builder = new Notification.Builder(MainActivity.this);
builder.setTicker(title);
builder.setSmallIcon(R.drawable.ic_launcher);
builder.setWhen(System.currentTimeMillis());
builder.setAutoCancel(true);
builder.setContentIntent(PendingIntent.getActivity(MainActivity.this, 0, new Intent(Intent.ACTION_DELETE), 0));

noti = builder.build();

remoteView = new RemoteViews(this.getPackageName(), R.layout.notification);
remoteView.setProgressBar(R.id.progress_horizontal, 100, 0, false);
remoteView.setImageViewResource(R.id.image, R.drawable.ic_launcher);
remoteView.setTextViewText(R.id.text, "我的新通知");

noti.contentView = remoteView;

if(isFirst){
timer = new Timer(true); 
task =new MyTimerTask();
timer.schedule(task,0, 1000);
isFirst=false;
}else {
timer.cancel();
task.cancel();
timer = new Timer(true); 
task =new MyTimerTask();
timer.schedule(task,0, 1000);
num=0;
}

mnotiManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
mnotiManager.notify(R.string.app_name, noti);
}

Handler handler = new Handler() {
public void handleMessage(Message msg) {
switch (msg.what) {
case 1:
num+=10;
remoteView.setProgressBar(R.id.progress_horizontal, 100, num, false);
noti.contentView = remoteView;
mnotiManager.notify(R.string.app_name, noti);
if(num>=100){
timer.cancel();
task.cancel();
}
break;
}
super.handleMessage(msg);
}
};

private class MyTimerTask extends TimerTask{
@Override
public void run() {
Message message = new Message();
message.what = 1;
handler.sendMessage(message);
}
}
}

这里我用了定时器来更新进度,可以根据实际情况作相应修改。



分享到:
评论

相关推荐

    Android notification进度条 demo

    本示例"Android notification进度条 demo"专门关注如何在通知中集成进度条,为用户提供一个可视化的操作进度指示。 Android的通知系统允许开发者创建各种类型的通知,包括带有进度条的。这种通知通常用于显示后台...

    用服务更新软件的安装包配合notification更新进度条

    "用服务更新软件的安装包配合notification更新进度条" 这一主题主要涉及到如何在后台执行文件下载,并通过服务(Service)来监控下载进度,同时利用Notification向用户反馈下载状态。以下是对这一主题的详细阐述: ...

    带进度条(ProgressBar)的Notification

    3. **更新进度**:在后台任务中,通过`NotificationManager`的`notify()`方法更新Notification的进度。 ```java int progress = (int) (100 * currentStatus / totalStatus); builder.setProgress(100, progress, ...

    【原】Android多任务下载,使用Notification更新进度条

    - 可以通过BroadcastReceiver监听DownloadManager的下载状态变化,当下载进度更新时,触发BroadcastReceiver的onReceive方法,更新Notification中的进度条。 5. **存储下载信息**: - 为了记录下载进度,可以使用...

    android实现Service后台下载Notification进度条

    最后,不要忘记在`updateNotification()`方法中更新Notification的进度条。 ```java private void updateNotification(int progress) { NotificationManager manager = (NotificationManager) getSystemService...

    Android版本更新(Service下载 Notification进度条)

    本篇主要探讨如何使用`Service`、`Notification`以及进度条来实现一个优雅的后台下载更新过程。首先,我们需要理解`Service`在Android中的作用。 `Service`是Android四大组件之一,它在后台运行,不提供用户界面,...

    Android实现为Notification加上一个进度条的方法

    在某些场景下,如文件下载、上传或后台任务执行,我们可能需要在Notification中添加一个进度条来实时展示任务进度。本篇文章将详细讲解如何在Android的Notification中添加一个进度条,并结合实例代码进行解析。 ...

    带有进度条的APP下载更新

    "带有进度条的APP下载更新"这一主题,聚焦于如何在应用程序中实现这样一个功能,使得用户在等待下载或更新过程中能清晰地看到进度,并通过通知(notification)来方便地管理和启动安装过程。 首先,我们需要理解APP...

    Android 自定义通知栏 更新通知栏进度条

    创建一个`Runnable`实例,在其`run()`方法中更新进度,并通过`Handler`的`postDelayed()`方法在一定时间后重调`run()`。这样可以模拟下载的进度变化。记得每次更新进度后,都需要使用`notifyDataSetChanged()`来刷新...

    带进度条,以及动态状态图标的Notification

    在Android开发中,`Notification`是一种非常重要的组件,它用于向用户展示应用在后台运行时的重要信息或状态更新。在标题“带进度条,以及动态状态图标的Notification”中,我们关注的重点是如何在`Notification`中...

    自定义包含变色progressbar的notification

    4.1创建自定义布局的notification 布局包含progressbar progressbar颜色可以变 自定义progressbar 布局中多个按钮可以点击 动态更新notification中的progressbar

    在状态栏中增加进度条

    通过以上步骤,你可以在Android的状态栏中创建并更新一个进度条通知。这不仅可以提高用户体验,还可以让用户知道应用程序在后台正在进行的操作。记住,良好的用户体验是Android应用成功的关键之一。

    Android更新下载进度条 demo

    本教程将通过一个名为“Android更新下载进度条 demo”的项目来探讨如何在Android中实现这一功能。这个项目涉及到的关键知识点包括`RemoteViews`的使用、通知栏通知以及异步任务的处理。 首先,`RemoteViews`是...

    Android Notification更新

    在Android系统中,Notification是应用与用户交互的重要方式之一,特别是在后台运行时,它能将信息传达给用户,如消息提醒、下载进度等。本文将深入探讨如何利用Android的Notification API来实现动态下载过程的可视化...

    在状态栏中显示进度条的下载更新

    本教程将详细讲解如何在Android的状态栏中显示进度条,并同步更新到当前Activity中的进度条,确保用户能够直观地了解操作的进度。 首先,我们需要在AndroidManifest.xml中为应用请求显示系统通知的权限: ```xml `...

    Android更新带进度条的通知栏

    综上所述,"Android更新带进度条的通知栏"涉及到Android的通知系统、Notification类的使用、进度条的设置与更新,以及自定义通知样式和响应用户操作。通过这些知识点,开发者可以为用户提供更丰富的交互体验,提高...

    android 进度条整理

    在`onProgressUpdate()`方法中更新进度条,以实时反映任务进度。 五、Loader与进度条 Loader框架提供了一种管理后台数据加载的方式,同时支持在UI上显示加载进度。使用`LoaderManager`和`Loader`接口,开发者可以...

    Android下载进度条案例

    这段代码定义了一个AsyncTask子类`DownloadTask`,它在`doInBackground`方法中执行实际的下载操作,并在`onProgressUpdate`中更新进度条的进度。`publishProgress`用于在主线程中调用`onProgressUpdate`,更新UI。 ...

Global site tag (gtag.js) - Google Analytics