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程序设计有所帮助。