模拟文件拷贝:
要求:要用progressDialog和子线程来模拟显示拷贝进度;进度完成后在主界面提示拷贝完成,分别使用普通方式和消息机制编写。
layout文件:
1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 xmlns:tools="http://schemas.android.com/tools" 4 android:layout_width="match_parent" 5 android:layout_height="match_parent" 6 android:paddingBottom="@dimen/activity_vertical_margin" 7 android:paddingLeft="@dimen/activity_horizontal_margin" 8 android:paddingRight="@dimen/activity_horizontal_margin" 9 android:paddingTop="@dimen/activity_vertical_margin" 10 tools:context="com.hanqi.testapp2.PractiseActivity6" 11 android:orientation="vertical"> 12 13 <Button 14 android:layout_width="match_parent" 15 android:layout_height="wrap_content" 16 android:text="文件拷贝__普通方式" 17 android:onClick="bt_kaobei1"/> 18 <Button 19 android:layout_width="match_parent" 20 android:layout_height="wrap_content" 21 android:text="文件拷贝__消息机制" 22 android:onClick="bt_kaobei2"/> 23 </LinearLayout>
java类:
1 package com.hanqi.testapp2; 2 3 import android.app.ProgressDialog; 4 import android.os.Bundle; 5 import android.os.Handler; 6 import android.os.Message; 7 import android.support.v7.app.AppCompatActivity; 8 import android.view.View; 9 import android.widget.Toast; 10 11 public class PractiseActivity6 extends AppCompatActivity { 12 13 @Override 14 protected void onCreate(Bundle savedInstanceState) { 15 super.onCreate(savedInstanceState); 16 setContentView(R.layout.activity_practise6); 17 } 18 public void bt_kaobei1(View v) 19 { 20 final ProgressDialog progressDialog = new ProgressDialog(this); 21 progressDialog.setTitle("文件复制"); 22 progressDialog.setMessage("复制中,请等待……"); 23 progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); 24 progressDialog.setCancelable(false); 25 progressDialog.show(); 26 new Thread(){ 27 @Override 28 public void run() { 29 for (int i=0;i<=100;i++) 30 { 31 progressDialog.setProgress(i); 32 try { 33 Thread.sleep(3000); 34 } 35 catch (Exception e) 36 { 37 38 } 39 } 40 runOnUiThread(new Runnable() { 41 @Override 42 public void run() { 43 44 Toast.makeText(PractiseActivity6.this, "文件拷贝完成", Toast.LENGTH_SHORT).show(); 45 } 46 }); 47 progressDialog.dismiss(); 48 } 49 }.start(); 50 } 51 Handler h = new Handler(){ 52 @Override 53 public void handleMessage(Message msg) { 54 super.handleMessage(msg); 55 if (msg.what ==1) 56 { 57 final ProgressDialog progressDialog = new ProgressDialog(PractiseActivity6.this); 58 progressDialog.setTitle("文件复制"); 59 progressDialog.setMessage("复制中,请等待……"); 60 progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); 61 progressDialog.setCancelable(false); 62 progressDialog.show(); 63 new Thread(){ 64 @Override 65 public void run() { 66 for (int i=0;i<=100;i++) 67 { 68 progressDialog.setProgress(i); 69 try { 70 Thread.sleep(3000); 71 } 72 catch (Exception e) 73 { 74 75 } 76 } 77 runOnUiThread(new Runnable() { 78 @Override 79 public void run() { 80 81 Toast.makeText(PractiseActivity6.this, "文件拷贝完成", Toast.LENGTH_SHORT).show(); 82 } 83 }); 84 progressDialog.dismiss(); 85 } 86 }.start(); 87 } 88 } 89 }; 90 public void bt_kaobei2(View v) 91 { 92 new Thread(){ 93 @Override 94 public void run() { 95 Message m = Message.obtain(); 96 m.what = 1; 97 h.sendEmptyMessage(1); 98 } 99 }.start(); 100 } 101 }
效果为: