progressDialog和子线程模拟显示拷贝进度
package com.example.wang.myapplication; import android.app.ProgressDialog;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast; public class ZuoyeActivity4 extends AppCompatActivity { Button bt_1;
Button bt_2; TextView tv_1; Handler h=new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg); if (msg.what==1)
{
tv_1.setText("拷贝完成");
}
else if(msg.what==2)
{
tv_1.setText("");
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_zuoye4); bt_1=(Button)findViewById(R.id.bt_1);
bt_1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final ProgressDialog progressDialog=new ProgressDialog(ZuoyeActivity4.this); progressDialog.setTitle("拷贝进度");
progressDialog.setMessage("拷贝中...");
progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
progressDialog.show(); new Thread(){
@Override
public void run() { for (int i=0;i<=100;i++)
{
progressDialog.setProgress(i); try { Thread.sleep(100);
}
catch (Exception e)
{
e.printStackTrace();
}
}
progressDialog.dismiss(); runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(ZuoyeActivity4.this, "拷贝完成", Toast.LENGTH_SHORT).show();
}
});
}
}.start();
}
}); tv_1=(TextView)findViewById(R.id.tv_1);
bt_2=(Button)findViewById(R.id.bt_2); bt_2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//常规方法跨线程访问组件
// runOnUiThread(new Runnable() {
// @Override
// public void run() {
// tv_1.setText("");
// }
// }); h.sendEmptyMessage(2);
final ProgressDialog progressdialog=new ProgressDialog(ZuoyeActivity4.this); progressdialog.setTitle("拷贝进度"); progressdialog.setMessage("请稍后...."); progressdialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); progressdialog.show(); new Thread(new Runnable() {
@Override
public void run() {
for (int i=0;i<100;i++)
{
progressdialog.setProgress(i); try{
Thread.sleep(100);}
catch (Exception e)
{
e.printStackTrace();
}
} progressdialog.dismiss(); h.sendEmptyMessage(1);
}
}).start(); }
}); }
}
java
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.wang.myapplication.ZuoyeActivity4"
android:orientation="vertical"> <Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="开始拷贝文件--普通方式"
android:id="@+id/bt_1"/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="开始拷贝文件--消息机制"
android:id="@+id/bt_2"/> <TextView
android:layout_width="match_parent"
android:layout_height="40dp"
android:background="#ccc"
android:gravity="center"
android:textSize="16sp"
android:id="@+id/tv_1"/> </LinearLayout>
xml
1.普通方式显示结果



2-消息机制结果


progressDialog和子线程模拟显示拷贝进度的更多相关文章
- Android——子线程操作主线程
子线程不能直接操作主线程 UI线程 //水平进度条 public void jdt1_onclick(View view) { final ProgressDialog pd = new Progre ...
- Android 子线程测试
private volatile boolean mStopped = false; private int i; TextView tv1; TextView tv2; @Override prot ...
- C# 多线程详解 Part.02(UI 线程和子线程的互动、ProgressBar 的异步调用)
我们先来看一段运行时会抛出 InvalidOperationException 异常的代码段: private void btnThreadA_Click(object sender, ...
- 【转载】Delphi7从子线程中发送消息到主线程触发事件执行
在对数据库的操作时,有时要用一个子线程来进行后台的数据操作.比如说数据备份,转档什么的.在主窗口还能同是进行其它操作.而有时后台每处理一个数据文件,要向主窗口发送消息,让主窗口实时显示处理进度在窗口上 ...
- Android -- ViewRoot,关于子线程刷新UI
Android在4.0之后执行线程更新UI操作会报异常:CalledFromWrongThreadException:Only the original thread that created a v ...
- Java如何等待子线程执行结束
工作中往往会遇到异步去执行某段逻辑, 然后先处理其他事情, 处理完后再把那段逻辑的处理结果进行汇总的产景, 这时候就需要使用线程了. 一个线程启动之后, 是异步的去执行需要执行的内容的, 不会影响主线 ...
- WPF 利用子线程弹出子窗体的研究
一般来说子线程都是用来处理数据的,主窗体用来实现展现,但是有些时候我们希望子窗体实现等待效果,遮挡主窗体并使主窗体逻辑正常进行,这个业务需求虽然不多,但是正好我们用到了,于是我打算把研究成果写在这了. ...
- Java线程池主线程等待子线程执行完成
今天讨论一个入门级的话题, 不然没东西更新对不起空间和域名~~ 工作总往往会遇到异步去执行某段逻辑, 然后先处理其他事情, 处理完后再把那段逻辑的处理结果进行汇总的产景, 这时候就需要使用线程了. 一 ...
- 19 Handler 子线程向主线程发送信息
案例一 Message创建三种方法: package com.example.day19_handler_demo1; import android.os.Bundle; import android ...
随机推荐
- Java入门:MyEclipse安装与破解教程
MyEclipse Pro 2014 GA的安装过程请参考网页:http://blog.my-eclipse.cn/myeclipse-2014-download-and-install.html 安 ...
- 利用Snapshot快速跨Region迁移服务器
当你需要对现有的网站进行跨区域迁移,或者是部署DR Site的时候,又不希望重新部署应用,有什么好办法呢?其实你可以利用Azure的磁盘snapshot进行磁盘级的复制,这样可以减少很多部署应用的时间 ...
- Python【datetime】模块
import datetimeprint("==============date类================")#创建一个date对象:datetime.date(year, ...
- c# string 和 byte[]数组之间转换
在文件流读取和存储过程当中,经常涉及到byte[]数组形式存储数据,再此过程中也涉及到String类型字符串和byte[]的类型转换,下面我们举例说明一下. 现在有一个字符串: string str ...
- Linux服务器上使用curl命令发送报文
报文格式如下: curl -l -H "Content-type: application/json" -X POST -d 'postdata' http://172.20.10 ...
- Java入门系列(一)基础概览
序言 Java语言的特点不使用指针而使用引用.
- Chrome截长屏
本文地址:https://www.cnblogs.com/veinyin/p/9257833.html Chrome截取长屏一直是一个痛点,之前尝试过第三方截图工具,但是不是收费就是不怎么好用,今 ...
- 支付宝hr终面,忐忑的等待结果
上周一,内推网投了支付宝上海的 高级java软件开发工程师:阿里效率就是高,不到30分钟电话就过来了!约的上周五14:00面试:上周五技术面了2轮,第一轮是主管面试,貌似给了p6;第二轮部门总监面试, ...
- linux可运行的shell脚本与设置开机服务启动(自己总结)
完整的ln命令参考:http://www.runoob.com/linux/linux-comm-ln.html ln :创建连接文件 - 默认创建的是硬连接,好比复制 ,但是两个文件会同步 命令:l ...
- bzoj 1014: 洛谷 P4036: [JSOI2008]火星人
题目传送门:洛谷P4036. 题意简述: 有一个字符串,支持插入字符,修改字符. 每次需要查询两个后缀的LCP长度. 最终字符串长度\(\le 100,\!000\),修改和询问的总个数\(\le 1 ...