主界面有个开始下载按钮,点击按钮以后开始模拟下载
界面布局:
1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" 3 android:layout_width="match_parent" 4 android:layout_height="match_parent" 5 android:paddingBottom="@dimen/activity_vertical_margin" 6 android:paddingLeft="@dimen/activity_horizontal_margin" 7 android:paddingRight="@dimen/activity_horizontal_margin" 8 android:paddingTop="@dimen/activity_vertical_margin" 9 tools:context="com.example.d27.MainActivity" > 10 11 <Button 12 android:id="@+id/button1" 13 android:layout_width="match_parent" 14 android:layout_height="wrap_content" 15 android:layout_alignParentLeft="true" 16 android:layout_alignParentTop="true" 17 android:text="开始下载" 18 android:onClick="onClick" /> 19 20 </RelativeLayout>
java部分代码如下:
1 package com.example.d27; 2 3 import android.app.Activity; 4 import android.app.ProgressDialog; 5 import android.os.Bundle; 6 import android.os.Handler; 7 import android.os.Message; 8 import android.view.View; 9 import android.widget.Toast; 10 11 public class MainActivity extends Activity { 12 private ProgressDialog dialog; 13 private Handler handler = new Handler() { 14 public void handleMessage(Message msg) { 15 switch (msg.what) {// 判断消息 16 case 1: 17 dialog.show();// 显示dialog 18 break; 19 case 2: 20 dialog.setMax(msg.arg2);// 设置dialog的最大值 21 dialog.setProgress(msg.arg1);// 设置进度条 22 dialog.setMessage("正在下载第" + msg.arg1 + "部分");// 设置内容 23 break; 24 case 3: 25 dialog.dismiss();// 不显示dialog 26 Toast.makeText(MainActivity.this, "下载完成", Toast.LENGTH_SHORT) 27 .show();// 通知下载完成 28 break; 29 } 30 }; 31 }; 32 33 @Override 34 protected void onCreate(Bundle savedInstanceState) { 35 super.onCreate(savedInstanceState); 36 setContentView(R.layout.activity_main); 37 // 初始化dialog 38 initDialog(); 39 } 40 41 // 初始化ProgressDialog 42 private void initDialog() { 43 // 创建dialog 44 dialog = new ProgressDialog(this); 45 // 设置dialog的样式为水平 46 dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); 47 // 设置图标 48 dialog.setIcon(android.R.drawable.ic_dialog_info); 49 // 设置标题 50 dialog.setTitle("正在下载"); 51 // 设置内容 52 dialog.setMessage(""); 53 // 设置是否可以取消dialog 54 dialog.setCancelable(false); 55 } 56 57 //开始下载按钮点击事件 58 public void onClick(View view) { 59 // 开启工作线程模拟下载,并发送消息给主线程更新界面 60 new Thread(new Download()).start(); 61 } 62 63 class Download implements Runnable { 64 65 @Override 66 public void run() { 67 // 发送消息让主线程显示dialog 68 handler.sendEmptyMessage(1); 69 for (int i = 0; i <= 10; i++) { 70 // 发送消息让主线程更新进度条 71 handler.obtainMessage(2, i, 10).sendToTarget(); 72 try { 73 // 当前线程休眠1秒来模拟下载 74 Thread.sleep(1000); 75 } catch (InterruptedException e) { 76 e.printStackTrace(); 77 } 78 } 79 // 下载完成,发送消息给主线程 80 handler.sendEmptyMessage(3); 81 } 82 83 } 84 }
---恢复内容结束---