码迷,mamicode.com
首页 > 其他好文 > 详细

模拟下载

时间:2014-11-27 21:55:41      阅读:223      评论:0      收藏:0      [点我收藏+]

标签:android   style   blog   http   io   ar   color   os   sp   

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

界面布局:

 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 }

 

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

模拟下载

标签:android   style   blog   http   io   ar   color   os   sp   

原文地址:http://www.cnblogs.com/catcher-1224/p/4127152.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!