首页 > 代码库 > 模拟下载

模拟下载

主界面有个开始下载按钮,点击按钮以后开始模拟下载

界面布局:

 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     <Button12         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();// 显示dialog18                 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();// 不显示dialog26                 Toast.makeText(MainActivity.this, "下载完成", Toast.LENGTH_SHORT)27                         .show();// 通知下载完成28                 break;29             }30         };31     };32 33     @Override34     protected void onCreate(Bundle savedInstanceState) {35         super.onCreate(savedInstanceState);36         setContentView(R.layout.activity_main);37         // 初始化dialog38         initDialog();39     }40 41     // 初始化ProgressDialog42     private void initDialog() {43         // 创建dialog44         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         // 设置是否可以取消dialog54         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         @Override66         public void run() {67             // 发送消息让主线程显示dialog68             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 }

 

---恢复内容结束---

模拟下载