android中ProgressDialog

来源:互联网 发布:算法帝国 编辑:程序博客网 时间:2024/05/22 02:04

      音乐播放器的进度条提示-ProgressBar,构建一个小程序,点击按钮后,出现进度条。

首先构建按钮布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent" >    <Button        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:text="确定"        android:onClick="click"/></RelativeLayout>

点击确定按钮,进度条缓慢加载,下面给出主程序。

package com.example.progressbar;import android.app.Activity;import android.app.Dialog;import android.app.ProgressDialog;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.view.View;//** 进度条,showDialog调用createDialog()和onPrepareDialog(),createDialog()方法调用onCreateDialog();public class MainActivity extends Activity {private final int PROGRESS_DIALOG = 0;private final int INCREASE = 0;private ProgressDialog pd;private Handler handler;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}public void click(View v){showDialog(PROGRESS_DIALOG);handler = new Handler(){public void handleMessage(Message msg) {switch (msg.what) {case INCREASE:if(pd.getProgress()<100){pd.incrementProgressBy(1);}break;}};};}@Overrideprotected Dialog onCreateDialog(int id) {switch (id) {case PROGRESS_DIALOG:pd = new ProgressDialog(this);pd.setMax(100);pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);pd.setTitle("音乐播放器");pd.setCancelable(false);pd.show();break;}return pd;}@Overrideprotected void onPrepareDialog(int id, Dialog dialog) {switch (id) {case PROGRESS_DIALOG:new Thread(){@Overridepublic void run() {while(true){handler.sendEmptyMessage(INCREASE);if(pd.getProgress()>=100){pd.dismiss();break;}try {Thread.sleep(40);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}};}.start();break;}}}

点击按钮,调用showDialog(int id)方法,showDialog()方法内部会执行createDialog(id, null, args),同时执行onPrepareDialog()方法,createDialog()方法调用onCreateDialog(int id)在onPrepareDialog()方法中启动了一个工作线程,模拟加载,每增1时线程睡眠0.04秒,在主线程中接收消息实现进度条的增长。在onCreateDialog(int id)方法中实现进度条的初始化。

0 0