Android 进度条_第1张图片




package com.malakana.dialog;


import android.os.Bundle;

import android.os.Handler;

import android.os.Message;

import android.util.Log;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.annotation.SuppressLint;

import android.app.Activity;

import android.app.Dialog;

import android.app.ProgressDialog;


public class MainActivity extends Activity {


final int PROGRESS_DIALOG = 0;

final int INCREASE = 0;

ProgressDialog pd;

Handler hd;


@SuppressLint("HandlerLeak")

@Override

public void onCreate(Bundle savedInstanceState) {

//protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);


Button bok = (Button) findViewById(R.id.button);

bok.setOnClickListener(new OnClickListener() {

@SuppressWarnings("deprecation")

@Override

public void onClick(View arg0) {

// TODO Auto-generated method stub

showDialog(PROGRESS_DIALOG);  //显示对话框

}


});


   // 创建Handler

hd = new Handler() {         

@Override

//重写的方法

public void handleMessage(Message msg) {  

//public void handlerMessage(Message msg) { 

//调用父类

super.handleMessage(msg); 

//判断接收的信息

switch (msg.what) {  

//接收到的消息为INCREASE

case INCREASE:

//进度条每次加1

pd.incrementProgressBy(1); 

//判断是否大于100

if (pd.getProgress() >= 100) { 

pd.dismiss();

}

//退出

break;

}

}


};

}


//创建对话框

@Override

public Dialog onCreateDialog(int id) {

//判断id

switch (id) {

case PROGRESS_DIALOG:

pd = new ProgressDialog(this);

//设置最大值

pd.setMax(100);  

pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);

//设置标题

pd.setTitle(R.string.title);  

pd.setCancelable(true);  

//设置进度对话框不能用回退按钮关闭

//pd.setCancelable(false);   

Log.d("kkk", "kkk");

break;

}

return pd;

}


@SuppressWarnings("deprecation")

@Override

//每次弹出对话框时被回调以动态更新对话框内容的方法

public void onPrepareDialog(int id, Dialog dialog) {

// 调用父类

super.onPrepareDialog(id, dialog);

switch (id) {

case PROGRESS_DIALOG:

//对话框进度清零

pd.incrementProgressBy(-pd.getProgress());  

new Thread() {

public void run() {

while (true) {

hd.sendEmptyMessage(INCREASE);

if (pd.getProgress() >= 100) {

break;

}

try {

Thread.sleep(40);


} catch (Exception e) {

e.printStackTrace();

}

}

}

}.start();

break;

}

}

}


更多相关文章

  1. Android模拟SD卡实现方法解析
  2. Android编程实现屏幕自适应方向尺寸与分辨率的方法
  3. Android Studio导入Project的方法
  4. Android使用AudioRecord遇到的问题与解决方法
  5. android进度条的样式
  6. 另类方法屏蔽Android4.03的HOME按键
  7. 2.5.3 使用alertDialog创建自定义对话框
  8. android SDK更新方法总结
  9. android设置Activity背景色为透明的2种方法

随机推荐

  1. 某风电企业研发软件许可监控管理及效率提
  2. 某汽车零部件企业研发软件许可监控与优化
  3. Golang笔记之流程控制
  4. MongoDB实战篇:高级查询----$elemMatch与a
  5. Veeam v11 重量级功能 CDP 持续数据保护(
  6. 培训学web前端前景如何?
  7. 索刻科技CRM用户手册
  8. html基础:table入门
  9. html基础:form表单
  10. php第一课vscode安装