软件编程
位置:首页>> 软件编程>> Android编程>> Android实现为Notification加上一个进度条的方法

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

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

标签:Android,Notification,进度条

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

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com