Android之进度条1
第一种方法(比较简单):
package com.example.dialogdemo; import java.util.Random; import android.app.Activity;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.os.SystemClock;
import android.view.Menu; public class MainActivity extends Activity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); final ProgressDialog progressDialog=new ProgressDialog(this);
//进度条设置成水平
progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
//设置最大值
progressDialog.setMax(100);
progressDialog.show();
//线程
new Thread(new Runnable() { private int progress; @Override
public void run() {
// TODO Auto-generated method stub
while(true){ progressDialog.setProgress(progress);
progress++;
SystemClock.sleep(new Random().nextInt(100));
if(progress==100){
progressDialog.dismiss();
}
} }
}).start();
} @Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
效果执行图:进入程序只能执行一次,相当于数据的“导入”。

第二中方法(仿Andorid应用的安装):
package com.example.progressdialog; import android.app.Activity;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.widget.Button; public class ProgressDialogActivity extends Activity { //任务大小
private int[] data = new int[100];
//已经完成数据
private int hasdata = 0;
//完成程度
private int status = 0;
//设置标记
final int SIGN = 0x11;
Handler h;
//定义一个ProgressDialog
ProgressDialog pd ;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btn = (Button)findViewById(R.id.button);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
showDialog(SIGN);
}
});
h = new Handler(){
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case 0x1111:
//设置状态
pd.setProgress(status);
break;
default:
break;
}
pd.setProgress(status);
} }; }
//调用onPrepareDialog()方法之后
@Override
protected Dialog onCreateDialog(int id, Bundle args) {
// TODO Auto-generated method stub
pd = new ProgressDialog(this);
pd.setMax(100);
pd.setMessage("正在安装中");
pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
pd.setCancelable(false);
return pd;
}
//调用showDialog()之后和调用onCreateDialog之前
@Override
protected void onPrepareDialog(int id, Dialog dialog, Bundle args) {
// TODO Auto-generated method stub
switch (id) {
case SIGN:
pd.incrementProgressBy(-pd.getProgress());
new Thread(){
@Override
public void run() {
while(status < 100){
status = dowork();
Message msg = new Message();
msg.what = 0x1111;
h.sendMessage(msg);
}
if(status >= 100){
//撤销
pd.dismiss();
}
}
}.start();
break;
}
}
public int dowork(){
data[hasdata ++] = (int)(Math.random()*100);
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
return hasdata;
}
}
执行效果图:点击按钮可重复执行

Android之进度条1的更多相关文章
- Android 设置进度条背景
Android 设置进度条背景 直接上代码 <ProgressBar android:id="@+id/progressBar" android:layout_width=& ...
- android 自定义进度条颜色
android 自定义进度条颜色 先看图 基于产品经理各种自定义需求,经过查阅了解,下面是自己对Android自定义进度条的学习过程! 这个没法了只能看源码了,还好下载了源码, sources\b ...
- Android之进度条2
我之前有写过一篇“Android之进度条1”,那个是条形的进度条(显示数字进度),这次实现圆形进度条. 点击查看Android之进度条1:http://www.cnblogs.com/caidupin ...
- android的进度条使用
android的进度条 1.实现的效果 2.布局代码 先写一个my_browser.xml文件 存放WebView <?xml version="1.0" encoding= ...
- android多线程进度条
多线程实现更新android进度条. 实例教程,详细信息我已经注释 android多线程进度条 01package com.shougao.hello; 02 03import android ...
- 最简单的android自定义进度条样式
一.自定义圆形进度条样式 1.在安卓项目drawable目录下新建一个xml文件如下:<?xml version="1.0" encoding="utf-8&quo ...
- Android多种进度条使用详解
在这里,总结一下loading进度条的使用简单总结一下. 一.说起进度条,必须说说条形进度条,经常都会使用到嘛,特别是下载文件进度等等,还有像腾讯QQ安装进度条一样,有个进度总给人良好的用户体验. 先 ...
- android ProgressBar 进度条的进度两端是圆角的方法
转自 http://www.jianshu.com/p/6e7ea842d5ce 另外工作原理可以参考http://blog.csdn.net/lan603168/article/details/44 ...
- Android -- ProgressBar(进度条的使用)
我们在开发程序是经常会需要软件全屏显示.自定义标题(使用按钮等控件)和其他的需求,今天这一讲就是如何控制Android应用程序的窗体显示. requestWindowFeature可以设置的值有:(具 ...
- android之进度条组件ProgressBar
首先是main.xml文件 代码如下: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android& ...
随机推荐
- Python3爬虫学习
学了几天python3,发现目前学到的与爬虫还是关系不大,所以现在准备爬虫和语言同步学习. 2016.8.9晚 先从最简单的开始,爬取指定url的所有内容: #encoding:UTF-8 impor ...
- Spring 3 整合Apache CXF WebService[转]
http://www.cnblogs.com/hoojo/archive/2012/07/13/2590593.html 在CXF2版本中,整合Spring3发布CXF WebService就更加简单 ...
- Codeforces Gym 100733H Designation in the Mafia flyod
Designation in the MafiaTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/c ...
- 实现Android半透明Menu效果的开发实例
不知道大家是否用过天天动听,对于它界面上的半透明Menu效果,笔者感觉非常漂亮.下面是天天动听半透明Menu的截图,欣赏下吧: 感觉还不错吧?那么如何实现这种半透明Menu效果呢?本文就重点讨论并给出 ...
- iOS开发——网络编程Swift篇&(七)NSURLSession详解
NSURLSession详解 // MARK: - /* 使用NSURLSessionDataTask加载数据 */ func sessionLoadData() { //创建NSURL对象 var ...
- .net平台下C#socket通信(转)
上篇.net平台下C#socket通信(上)介绍了socket通信的基本原理及最基本的通信方式.本文在此基础上就socket通信时经常遇到的问题做一个简单总结,都是项目中的一些小问题,拿来此处便于下次 ...
- jquery.validate.js使用id验证控件
jquery.validate.js默认的是元素的name. 例如:<input name="username" id="username" size=& ...
- Web开发接口测试工具——Postman插件的使用(chrome浏览器)
Postman是chrome浏览器的一款插件.Postman 可以模拟 http 请求的发送,并自动解析 JSON 和 XML 的返回数据. 可以手动的去配置各类 parameter,还支持 Basi ...
- hdu 3849 (双联通求桥)
一道简单的双联通求桥的题目,,数据时字符串,,map用的不熟练啊,,,,,,,,,,,,, #include <iostream> #include <cstring> #in ...
- 安装Laravel遇到You must enable the openssl extension to download files via https问题
刚看了一篇文章说了2014年最火的10个php框架,看到了Laravel,于是便自己试试,孰料刚安装便遇到了一个问题(由于一不小心关掉了cmd,此处无法截图显示),便是如文章标题中所说的那样,goog ...