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

作者:老码农豆豆 时间:2022-12-14 00:39:01 

本文实例讲述了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程序设计有所帮助。

标签:Android,Notification,进度条
0
投稿

猜你喜欢

  • 浅谈Java HttpURLConnection请求方式

    2021-06-24 12:34:49
  • Java spring AOP基础

    2022-08-10 12:39:25
  • 详解C#中的依赖注入和IoC容器

    2023-03-11 09:05:19
  • Java缓存ehcache的使用步骤

    2022-06-25 04:30:55
  • Android AlertDialog(对话框)实例详解

    2023-07-19 11:37:55
  • 在Spring Boot中实现HTTP缓存的方法

    2023-10-06 14:18:16
  • Android PowerManagerService省电模式策略控制

    2023-11-25 02:46:53
  • 深入学习Java编程中的字符串的进阶使用

    2023-11-11 12:54:20
  • Android 个人理财工具四:添加账单页面 下

    2021-09-05 00:43:59
  • 如何让C#、VB.NET实现复杂的二进制操作

    2023-10-14 19:22:52
  • Android实现桌面悬浮窗、蒙板效果实例代码

    2022-12-15 18:09:42
  • C#单例模式与多线程用法介绍

    2023-03-25 09:36:07
  • Java编程实现生成给定范围内不重复随机数的方法小结

    2022-03-21 22:45:13
  • Flutter实现底部导航栏效果

    2022-03-28 05:41:46
  • c# 闭包的相关知识以及需要注意的地方

    2023-12-11 01:27:54
  • 详解C#中的out和ref

    2023-08-13 18:15:21
  • Java的异常体系以及File类构造方法详解

    2021-09-05 20:06:41
  • Unity实现Flappy Bird游戏开发实战

    2023-03-10 19:56:58
  • GC算法实现垃圾优先算法

    2023-11-07 17:25:15
  • 详解Kotlin的空指针处理

    2022-06-03 06:57:58
  • asp之家 软件编程 m.aspxhome.com