- 浏览: 185400 次
- 性别:
- 来自: 浙江
文章分类
最新评论
有时我们在下载的时候可以在通知里看到进度条信息,我这里做了一个简单更新进度条的通知。
进度条布局如下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);
}
}
}
这里我用了定时器来更新进度,可以根据实际情况作相应修改。
进度条布局如下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);
}
}
}
这里我用了定时器来更新进度,可以根据实际情况作相应修改。
- Notification.rar (1.3 MB)
- 下载次数: 64
发表评论
-
关于Android的webSocket的简单使用
2017-05-12 14:34 987使用第三方jar: autobahn-0.5.0.jar 连 ... -
Comparator自定义排序的使用
2017-05-11 14:18 749java对于集合的自定义排序方法有: Arrays.sort ... -
查看Android虚拟机文件相关命令
2017-05-02 14:12 608我们在虚拟机下添加文件后,想查看下文件是否正确创建,可在win ... -
android6.0创建文件问题
2017-05-02 12:58 587Android在6.0有了动态权限管理,在文件创建时就需要动态 ... -
xutils的http模块的简单使用
2017-04-28 16:05 527先导入xutils相关依赖: compile 'org.xut ... -
Litepal的简单使用
2017-04-27 17:21 642相关包下载地址:https://github.com/Lite ... -
Android下拉刷新上拉加载控件的使用
2017-04-21 10:46 852参考链接:http://www.jianshu.com/p/6 ... -
图片加载框架
2017-04-19 16:29 402图片加载框架: picasso ImageLoader -
Android的Service总结
2017-04-17 15:46 461参考链接:http://www.cnblogs.com/lwb ... -
解决ViewPager的addOnPageChangeListener不加载第一个的问题
2017-03-18 17:53 2649今天在使用ViewPager的时候发现个问题。 需求如下: ... -
clone方法的使用
2017-01-04 10:14 555由于Java有引用这一说,当两个变量指向同一块内存时,改变 ... -
Fragment无法切换问题
2016-12-16 14:57 2114Android有一个回收机制,当内存不足时,会自动回收相关内存 ... -
关于Material Design的CollapsingToolbarLayout初次使用
2016-12-16 13:38 614最近了解了下CollapsingToolbarLayout的使 ... -
MVP模式的学习
2016-12-10 15:15 676以前我写代码都是使用MVC模式,这种模式使Activity变得 ... -
Material Design:Android Design Support Library 介绍
2016-12-10 14:14 471参考链接 : https://blog.leancloud.c ... -
SpannableString简介
2016-12-10 14:03 424参考链接: http://www.cnblogs.com/ji ... -
getResources().getDrawable方法的废弃
2016-12-10 13:20 1236参考链接:http://www.jianshu.com/p/e ... -
关于AndroidStudio的Unsupported major.minor version 52.0异常
2016-12-10 13:15 2380参考链接:http://blog.csdn.net/fakin ... -
Android记录
2015-06-01 10:54 642http://tools.android-studio.org ... -
android自定义控件相关使用
2015-04-24 16:53 612用代码简单介绍下自定义控件的使用: 先看主activity: ...
相关推荐
本示例"Android notification进度条 demo"专门关注如何在通知中集成进度条,为用户提供一个可视化的操作进度指示。 Android的通知系统允许开发者创建各种类型的通知,包括带有进度条的。这种通知通常用于显示后台...
"用服务更新软件的安装包配合notification更新进度条" 这一主题主要涉及到如何在后台执行文件下载,并通过服务(Service)来监控下载进度,同时利用Notification向用户反馈下载状态。以下是对这一主题的详细阐述: ...
3. **更新进度**:在后台任务中,通过`NotificationManager`的`notify()`方法更新Notification的进度。 ```java int progress = (int) (100 * currentStatus / totalStatus); builder.setProgress(100, progress, ...
- 可以通过BroadcastReceiver监听DownloadManager的下载状态变化,当下载进度更新时,触发BroadcastReceiver的onReceive方法,更新Notification中的进度条。 5. **存储下载信息**: - 为了记录下载进度,可以使用...
最后,不要忘记在`updateNotification()`方法中更新Notification的进度条。 ```java private void updateNotification(int progress) { NotificationManager manager = (NotificationManager) getSystemService...
本篇主要探讨如何使用`Service`、`Notification`以及进度条来实现一个优雅的后台下载更新过程。首先,我们需要理解`Service`在Android中的作用。 `Service`是Android四大组件之一,它在后台运行,不提供用户界面,...
在某些场景下,如文件下载、上传或后台任务执行,我们可能需要在Notification中添加一个进度条来实时展示任务进度。本篇文章将详细讲解如何在Android的Notification中添加一个进度条,并结合实例代码进行解析。 ...
"带有进度条的APP下载更新"这一主题,聚焦于如何在应用程序中实现这样一个功能,使得用户在等待下载或更新过程中能清晰地看到进度,并通过通知(notification)来方便地管理和启动安装过程。 首先,我们需要理解APP...
创建一个`Runnable`实例,在其`run()`方法中更新进度,并通过`Handler`的`postDelayed()`方法在一定时间后重调`run()`。这样可以模拟下载的进度变化。记得每次更新进度后,都需要使用`notifyDataSetChanged()`来刷新...
在Android开发中,`Notification`是一种非常重要的组件,它用于向用户展示应用在后台运行时的重要信息或状态更新。在标题“带进度条,以及动态状态图标的Notification”中,我们关注的重点是如何在`Notification`中...
4.1创建自定义布局的notification 布局包含progressbar progressbar颜色可以变 自定义progressbar 布局中多个按钮可以点击 动态更新notification中的progressbar
通过以上步骤,你可以在Android的状态栏中创建并更新一个进度条通知。这不仅可以提高用户体验,还可以让用户知道应用程序在后台正在进行的操作。记住,良好的用户体验是Android应用成功的关键之一。
本教程将通过一个名为“Android更新下载进度条 demo”的项目来探讨如何在Android中实现这一功能。这个项目涉及到的关键知识点包括`RemoteViews`的使用、通知栏通知以及异步任务的处理。 首先,`RemoteViews`是...
在Android系统中,Notification是应用与用户交互的重要方式之一,特别是在后台运行时,它能将信息传达给用户,如消息提醒、下载进度等。本文将深入探讨如何利用Android的Notification API来实现动态下载过程的可视化...
本教程将详细讲解如何在Android的状态栏中显示进度条,并同步更新到当前Activity中的进度条,确保用户能够直观地了解操作的进度。 首先,我们需要在AndroidManifest.xml中为应用请求显示系统通知的权限: ```xml `...
综上所述,"Android更新带进度条的通知栏"涉及到Android的通知系统、Notification类的使用、进度条的设置与更新,以及自定义通知样式和响应用户操作。通过这些知识点,开发者可以为用户提供更丰富的交互体验,提高...
在`onProgressUpdate()`方法中更新进度条,以实时反映任务进度。 五、Loader与进度条 Loader框架提供了一种管理后台数据加载的方式,同时支持在UI上显示加载进度。使用`LoaderManager`和`Loader`接口,开发者可以...
这段代码定义了一个AsyncTask子类`DownloadTask`,它在`doInBackground`方法中执行实际的下载操作,并在`onProgressUpdate`中更新进度条的进度。`publishProgress`用于在主线程中调用`onProgressUpdate`,更新UI。 ...