本文实例讲述了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;// 当界面处理停止的状态 时,设置让进度条取消@Overrideprotected void onPause() {// TODO Auto-generated method stubisStop = false;manager.cancel(NOTIFICATION_ID);super.onPause();}/** Called when the activity is first created. */@Overridepublic 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做统一管理,只需要知道IDmanager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);}@Overridepublic void onClick(View v) {// TODO Auto-generated method stubisStop = true;manager.notify(NOTIFICATION_ID, notification);thread = new Thread(new Runnable() {@Overridepublic void run() {Thread.currentThread();// TODO Auto-generated method stubwhile (isStop) {_progress += 10;Message msg = handler.obtainMessage();msg.arg1 = _progress;msg.sendToTarget();try {Thread.sleep(500);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}});thread.start();handler = new Handler() {@Overridepublic void handleMessage(Message msg) {// TODO Auto-generated method stubnotification.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基本组件用法总结》、《Android视图View技巧总结》、《Android资源操作技巧汇总》、《Android文件操作技巧汇总》、《Android操作SQLite数据库技巧总结》、《Android操作json格式数据技巧总结》、《Android数据库操作技巧总结》、《Android编程开发之SD卡操作方法汇总》、《Android开发入门与进阶教程》、《Android编程之activity操作技巧总结》及《Android控件用法总结》
希望本文所述对大家Android程序设计有所帮助。