Android实现为Notification加上一个进度条的方法
本文实例讲述了Android实现为Notification加上一个进度条的方法。分享给大家供大家参考,具体如下:
packagecom.notification;
importandroid.app.Activity;
importandroid.app.Notification;
importandroid.app.NotificationManager;
importandroid.app.PendingIntent;
importandroid.content.Intent;
importandroid.os.Bundle;
importandroid.os.Handler;
importandroid.os.Message;
importandroid.view.View;
importandroid.view.View.OnClickListener;
importandroid.widget.Button;
importandroid.widget.RemoteViews;
importandroid.widget.Toast;
publicclassnofificationActivityextendsActivityimplementsOnClickListener{
privatestaticfinalintNOTIFICATION_ID=0x12;
privateNotificationnotification=null;
privateNotificationManagermanager=null;
publicHandlerhandler;
privateint_progress=0;
privateThreadthread=null;
privatebooleanisStop=false;
//当界面处理停止的状态时,设置让进度条取消
@Override
protectedvoidonPause(){
//TODOAuto-generatedmethodstub
isStop=false;
manager.cancel(NOTIFICATION_ID);
super.onPause();
}
/**Calledwhentheactivityisfirstcreated.*/
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Buttonbtn=(Button)findViewById(R.id.Button01);
btn.setOnClickListener(this);
notification=newNotification(R.drawable.icon,"带进条的提醒",System
.currentTimeMillis());
notification.icon=R.drawable.icon;
//通过RemoteViews设置notification中View的属性
notification.contentView=newRemoteViews(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,
newIntent(this,remoteView.class),0);
//获得一个NotificationManger对象,此对象可以对notification做统一管理,只需要知道ID
manager=(NotificationManager)getSystemService(NOTIFICATION_SERVICE);
}
@Override
publicvoidonClick(Viewv){
//TODOAuto-generatedmethodstub
isStop=true;
manager.notify(NOTIFICATION_ID,notification);
thread=newThread(newRunnable(){
@Override
publicvoidrun(){
Thread.currentThread();
//TODOAuto-generatedmethodstub
while(isStop){
_progress+=10;
Messagemsg=handler.obtainMessage();
msg.arg1=_progress;
msg.sendToTarget();
try{
Thread.sleep(500);
}catch(InterruptedExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
}
});
thread.start();
handler=newHandler(){
@Override
publicvoidhandleMessage(Messagemsg){
//TODOAuto-generatedmethodstub
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基本组件用法总结》、《Android视图View技巧总结》、《Android资源操作技巧汇总》、《Android文件操作技巧汇总》、《Android操作SQLite数据库技巧总结》、《Android操作json格式数据技巧总结》、《Android数据库操作技巧总结》、《Android编程开发之SD卡操作方法汇总》、《Android开发入门与进阶教程》、《Android编程之activity操作技巧总结》及《Android控件用法总结》
希望本文所述对大家Android程序设计有所帮助。