<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">写下这篇文章是为了以后用到时直接复制代码</span>
下面是实现Progressdialog在屏幕中央显示:
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"></span><pre name="code" class="java">dialog = new ProgressDialog(getActivity());
dialog.setTitle("联网");//设置标题
dialog.setMessage("正在联网"+LinkTime+"s"); //设置说明文字
dialog.setIndeterminate(false); //设置进度条是否为不明确(来回旋转)
dialog.setCanceledOnTouchOutside(false); //设置点击屏幕不消失
dialog.setCancelable(true); //设置进度条是否可以按退回键取消
Window wd = dialog.getWindow(); //获取屏幕管理器
WindowManager.LayoutParams lp = wd.getAttributes();
lp.alpha = 0.8f; //设置循环框的透明度
wd.setAttributes(lp); //设置弹出框的透明度
wd.setGravity(Gravity.CENTER); //设置水平居中
dialog.dismiss();//先隐藏起来,再在监听器中调用dialog.show()
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"></span><pre name="code" class="html">下面是倒计时的实现方法:
<pre name="code" class="java">Handler handler = new Handler(){
@Override
public void handleMessage(Message msg){
switch (msg.what) {
case 1:
dialog.setMessage("正在联网"+LinkTime+"s");
if(LinkTime < 0){
timer.cancel();
dialog.dismiss();
}
}
}
};
</pre><pre name="code" class="java"><pre name="code" class="java"> public class MyTimerTask extends TimerTask {
@Override
public void run() {
LinkTime--;
Message message = new Message();
message.what = 1;
handler.sendMessage(message);
}
};
监听器中调用,这之前需要先建立一个MyTimerTask对象task跟一个Timer对象计时实现task
<pre name="code" class="java"><pre name="code" class="java"> dialog.show();
if (task != null){
task.cancel(); //将原任务从队列中移除,不然倒计时没到取消后再次点击时会奔溃
}
task=new MyTimerTask();
timer=new Timer();
timer.schedule(task, 1000,1000);
目前遇到一个问题便是倒计时没到,按返回键取消progressdialog后,再次点击按钮实现监听事件,虽然Timer不会奔溃,但是progressdialog不会再次显示出来,我尝试过重新new一个dialog也没有用,哪位仁兄告诉我怎么解决这个问题,感激不尽。
</pre><pre>