这篇文章主要介绍了 Android 实现为 Notification 加上一个进度条的方法, 结合实例形式分析了 Android 针对 Notification 组件的相关操作技巧, 需要的朋友可以参考下
Android 是一种基于 Linux 的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由 Google 公司和开放手机联盟领导及开发。尚未有统一中文名称,中国大陆地区较多人使用 "安卓" 或 "安致"。
本文实例讲述了 Android 实现为 Notification 加上一个进度条的方法。分享给大家供大家参考,具体如下:
- package com.notification;
- import android.app.Activity;
- import android.app.Notification;
- import android.app.NotificationManager;
- import android.app.PendingIntent;
- import android.content.Intent;
- import android.os.Bundle;
- import android.os.Handler;
- import android.os.Message;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.widget.Button;
- import android.widget.RemoteViews;
- import android.widget.Toast;
- public class nofificationActivity extends Activity implements OnClickListener {
- private static final int NOTIFICATION_ID = 0x12;
- private Notification notification = null;
- private NotificationManager manager = null;
- public Handler handler;
- private int _progress = 0;
- private Thread thread = null;
- private boolean isStop = false;
- // 当界面处理停止的状态 时,设置让进度条取消
- @Override
- protected void onPause() {
- // TODO Auto-generated method stub
- isStop = false;
- manager.cancel(NOTIFICATION_ID);
- super.onPause();
- }
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- Button btn = (Button) findViewById(R.id.Button01);
- btn.setOnClickListener(this);
- notification = new Notification(R.drawable.icon, "带进条的提醒", System
- .currentTimeMillis());
- notification.icon = R.drawable.icon;
- // 通过RemoteViews 设置notification中View 的属性
- notification.contentView = new RemoteViews(getApplication()
- .getPackageName(), R.layout.custom_dialog);
- notification.contentView.setProgressBar(R.id.pb, 100, 0, false);
- notification.contentView.setTextViewText(R.id.tv, "进度" + _progress
- + "%");
- // 通过PendingIntetn
- // 设置要跳往的Activity,这里也可以设置发送一个服务或者广播,
- // 不过在这里的操作都必须是用户点击notification之后才触发的
- notification.contentIntent = PendingIntent.getActivity(this, 0,
- new Intent(this, remoteView.class), 0);
- // 获得一个NotificationManger 对象,此对象可以对notification做统一管理,只需要知道ID
- manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
- }
- @Override
- public void onClick(View v) {
- // TODO Auto-generated method stub
- isStop = true;
- manager.notify(NOTIFICATION_ID, notification);
- thread = new Thread(new Runnable() {
- @Override
- public void run() {
- Thread.currentThread();
- // TODO Auto-generated method stub
- while (isStop) {
- _progress += 10;
- Message msg = handler.obtainMessage();
- msg.arg1 = _progress;
- msg.sendToTarget();
- try {
- Thread.sleep(500);
- } catch (InterruptedException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- }
- });
- thread.start();
- handler = new Handler() {
- @Override
- public void handleMessage(Message msg) {
- // TODO Auto-generated method stub
- notification.contentView.setProgressBar(R.id.pb, 100, msg.arg1,
- false);
- notification.contentView.setTextViewText(R.id.tv, "进度"
- + msg.arg1 + "%");
- manager.notify(NOTIFICATION_ID, notification);
- if (msg.arg1 == 100) {
- _progress = 0;
- manager.cancel(NOTIFICATION_ID);
- isStop = false;
- Toast.makeText(nofificationActivity.this, "下载完毕", 1000)
- .show();
- }
- super.handleMessage(msg);
- }
- };
- }
- }
希望本文所述对大家 Android 程序设计有所帮助。
来源: http://www.phperz.com/article/17/0329/302409.html