㈠ android网络加载进度条怎么使用
由于Android的界面更新只能通过自己的UI线程进行操作,所以我们需要用到Handler在进行更新界面的操作。
1、声明变量
private Handler handler = new Handler();
private ProgressDialog progressDialog = null;
2、在开始进行网络连接时显示进度条对话框
progressDialog = ProgressDialog.show(MyActivity.this, "请稍等...", "获取数据中...", true);
3、在handler.post中进行界面更新
public void setListAdapter(){
handler.post(new Runnable() {
public void run() {
//将获取到的数据更新到列表中
MyListView.setAdapter(saImageItems);
}
}
});
4、开个新的线程进行网络连接获取数据
new Thread(new Runnable(){
@Override
public void run() {
// TODO Auto-generated method stub
//向服务器请求数据
mapList=MyAPI.getAllDatas();
setListAdapter(mapList);
//更新完列表数据,则关闭对话框
progressDialog.dismiss();
}}).start();
整个过程就这样完成了,下面是效果图:
㈡ android进度条上的小球怎么设置
谓进度条、滑动条和评分控件,在手机应用中,相信你见过加载游戏时、更新应用时等情况,屏幕出现一条进度栏,这里称之为进度条;当你调节音量时出现的这里即称作滑动条;而评分控件,当你在淘宝给卖家评价时出现的类似5星评价,这里即称作评分控件,下面将分别详细说明这三种控件的基础使用方法。
工具/原料
eclipse
一、ProgressBar进度条控件
1
首先ProgressBar进度条给出了两种样式,分别是progressBarStyleLarge和progressBarStyleHorizontal,此次主要以progressBarStyleHorizontal水平进度条为例讲解,可在视图布局Form Widgets中找到,其布局代码和布局演示示例如下。
2
ProgressBar进度条需要创建一个继承AsyncTask抽象类的Activity,并重写doInBackground和onProgressUpdate方法,来实现进度条的基础功能,在此之前确保已经创建了Acticity并获取了ProgressBar控件。其代码如下:
3
增加按钮创建点击事件使进度条可以实现功能,并设置最大数值100。其代码如下。
END
二、SeekBar滑动条控件
1
首先将SeekBar滑动条的View写出来,具体代码和样式如下。
2
然后调用SeekBar控件,并设置总进度大小和设置监听事件,以便对滑动条后续操作。和ProgressBar进度条一样,用到了setMax方法来确定大小。另外还用到了setOnSeekBarChangeListener进行监听滑动条的事件状态。相关代码如下:
END
三、RatingBar评分控件
RatingBar评分控件和SeekBar滑动条控件类似,首先还是先来把View视图写好,但要注意其中有一个属性,android:numStars="6",表示总分是6分,代码和样式如下:
然后同样再在Activity中调用RatingBar控件,并使用setOnRatingBarChangeListener方法来测试监听评分的状态。相关代码如下:
最后针对如System.out.println("-->"+rating);这个形式,这个测试方法,可以过滤的多余的无用LogCat信息,进而方便我们测试。以下是测试信息。简单明了。
步骤阅读
㈢ 怎样实现在android实现带进度条的上传效果
实现在android实现带进度条的上传效果效果如图:用到以下两个类就可实现带进度条的文件上传:
1、CustomMultiPartEntity extends MultipartEntity,
2、HttpMultipartPost extends AsyncTask
代码如下:
import java.io.FilterOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.nio.charset.Charset;
import org.apache.http.entity.mime.HttpMultipartMode;
import org.apache.http.entity.mime.MultipartEntity;
public class CustomMultipartEntity extends MultipartEntity {
private final ProgressListener listener;
public CustomMultipartEntity(final ProgressListener listener) {
super();
this.listener = listener;
}
public CustomMultipartEntity(final HttpMultipartMode mode, final ProgressListener listener) {
super(mode);
this.listener = listener;
}
public CustomMultipartEntity(HttpMultipartMode mode, final String boundary,
final Charset charset, final ProgressListener listener) {
super(mode, boundary, charset);
this.listener = listener;
}
@Override
public void writeTo(final OutputStream outstream) throws IOException {
super.writeTo(new CountingOutputStream(outstream, this.listener));
}
public static interface ProgressListener {
void transferred(long num);
}
public static class CountingOutputStream extends FilterOutputStream {
private final ProgressListener listener;
private long transferred;
public CountingOutputStream(final OutputStream out, final ProgressListener listener) {
super(out);
this.listener = listener;
this.transferred = 0;
}
public void write(byte[] b, int off, int len) throws IOException {
out.write(b, off, len);
this.transferred += len;
this.listener.transferred(this.transferred);
}
public void write(int b) throws IOException {
out.write(b);
this.transferred++;
this.listener.transferred(this.transferred);
}
}
}
该类计算写入的字节数,我们需要在实现ProgressListener中的trasnfered()方法,更行进度条
public class HttpMultipartPost extends AsyncTask<HttpResponse, Integer, TypeUploadImage> {
ProgressDialogpd;
longtotalSize;
@Override
protectedvoidonPreExecute(){
pd= newProgressDialog(this);
pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
pd.setMessage("Uploading Picture...");
pd.setCancelable(false);
pd.show();
}
@Override
(HttpResponse... arg0) {
HttpClienthttpClient = newDefaultHttpClient();
HttpContexthttpContext = newBasicHttpContext();
HttpPosthttpPost = newHttpPost("http://herpderp.com/UploadImage.php");
try{
= newCustomMultipartEntity(
newProgressListener() {
@Override
public void transferred(longnum){
publishProgress((int) ((num / (float) totalSize) * 100));
}
});
// We use FileBody to transfer an image
multipartContent.addPart("uploaded_file", newFileBody(
newFile(m_userSelectedImagePath)));
totalSize= multipartContent.getContentLength();
// Send it
httpPost.setEntity(multipartContent);
HttpResponseresponse = httpClient.execute(httpPost, httpContext);
String serverResponse = EntityUtils.toString(response.getEntity());
ResponseFactoryrp = newResponseFactory(serverResponse);
return(TypeImage) rp.getData();
}
catch(Exception e) {
System.out.println(e);
}
returnnull;
}
@Override
protectedvoidonProgressUpdate(Integer... progress){
pd.setProgress((int) (progress[0]));
}
@Override
protectedvoidonPostExecute(TypeUploadImageui) {
pd.dismiss();
}
}
在 transferred()函数中调用publishProgress((int) ((num / (float) totalSize) * 100));
在onProgressUpdate()实现上传进度的更新操作
㈣ 怎样实现多线程实现android更新进度条效果
实例教程,详细信息我已经注释
01
package com.shougao.hello;
02
03
import android.app.Activity;
04
import android.os.Bundle;
05
import android.os.Handler;
06
import android.os.Message;
07
import android.view.View;
08
import android.view.View.OnClickListener;
09
import android.widget.Button;
10
import android.widget.ProgressBar;
11
12
public class HelloActivity extends Activity {
13
/** Called when the activity is first created. */
14
15
private ProgressBar progressBar;
16
private Button startButton;
17
18
@Override
19
public void onCreate(Bundle savedInstanceState) {
20
super.onCreate(savedInstanceState);
21
setContentView(R.layout.main);
22
23
progressBar = (ProgressBar) findViewById(R.id.progressbar);
24
startButton = (Button) findViewById(R.id.startButton);
25
26
startButton.setOnClickListener(new ProgressBarOnClickListener());
27
}
28
29
class ProgressBarOnClickListener implements OnClickListener {
30
public void onClick(View v) {
31
// 设置进度条为可见状态
32
progressBar.setVisibility(View.VISIBLE);
33
// 添加updataThread到消息队列
34
updateBarHandler.post(updateThread);
35
}
36
}
37
38
// 使用匿名内部类来复写Handler当中的handlerMessage()方法
39
// 这个handler是需要反复执行的,直到消息队列中没有Message为止。
40
// 执行过程中把进度条就刷新了。
41
Handler updateBarHandler = new Handler() {
42
@Override
43
public void handleMessage(Message msg) {
44
System.out.println("----------start handle");
45
progressBar.setProgress(msg.arg1);
46
updateBarHandler.post(updateThread); // 将要执行的线程放入到队列当中
47
}
48
};
49
50
// 线程类,该类使用匿名内部类的方式进行声明
51
Runnable updateThread = new Runnable() {
52
int i = 0;
53
54
public void run() {
55
// TODO Auto-generated method stub
56
System.out.println("----------Begin Thread");
57
i += 20;
58
// 得到一个消息对象,Message类是android系统提供的
59
Message msg = updateBarHandler.obtainMessage();
60
// 将Message对象的arg1参数的值设置为i
61
msg.arg1 = i; // 用arg1、arg2这两个成员变量传递消息,优点是系统性能消耗较少
62
try {
63
Thread.sleep(3000); // 让当前线程休眠1000毫秒
64
} catch (InterruptedException ex) {
65
ex.printStackTrace();
66
}
67
// 将Message对象加入到消息队列当中,等下次looper调用消息队列时,使用这个message显示进度条
68
// 或者说,把增加了10%的进度信息Message放到updateBarHandler的队列中。
69
if (i < 101){
70
updateBarHandler.sendMessage(msg);
71
}
72
// 如果i的值等于100
73
if (i == 100) {
74
// 将线程对象从队列中移除
75
updateBarHandler.removeCallbacks(updateThread);
76
}
77
}
78
};
79
}
㈤ android问题:在button里面写了创建一个进度条,还调用了一个方法,方法里是从服务器下载数据!
看样子像是你没有用一个新的线程去处理下载数据,而是全部放在主线程里面进行了。所以按代码执行顺序,下载完数据之后才执行到显示进度条的代码。
㈥ android 进度条,暂停,继续怎么弄
Handler和ProgressBar实现进度条的开始,暂停,停止,后退和循环
一,涉及的handler类方法
1,
post(Runnable r)
Causes the Runnable r to be added to the message queue.将要执行的线程对象加到队列当中
2,
removeCallbacks(Runnable r)
Remove any pending posts of Runnable r that are in the message queue.移除队列当中未执行的线程对象
3,
postDelayed(Runnable r, long delayMillis)
Causes the Runnable r to be added to the message queue, to be run after the specified amount of time elapses.
将要执行的线程对象放入到队列当中,待时间结束后,运行制定的线程对象
二,编写程序
程序效果:实现进度条的开始,暂停,停止,后退和循环
http://blog.csdn.net/superjunjin/article/details/7539844
㈦ android编程里如何使用按钮来增加和减少进度条的进度
//这个是增加的,把这看懂,减的也就会了
packagecom.example.progressbardemo;
importandroid.app.Activity;
importandroid.os.Bundle;
importandroid.view.View;
importandroid.view.View.OnClickListener;
importandroid.widget.Button;
importandroid.widget.ProgressBar;
{
privateProgressBarone;
privateButtonbutton;
privateinti=0;
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
one=(ProgressBar)findViewById(R.id.progressBar2);
button=(Button)findViewById(R.id.button1);
button.setOnClickListener(newOnClickListener(){
@Override
publicvoidonClick(Viewarg0){
if(i==0){
one.setVisibility(View.VISIBLE);
}
elseif(i<one.getMax())
{
one.setProgress(i);
}
else
{
one.setVisibility(View.GONE);
i=0;
}
i+=5;
}
});
}
}
㈧ android开发中videoview的自带的进度条如何隐藏
android自带的播放器的进度条是默认会自动隐藏的,不能设置的。除非你去改源代码。你可以下个其他的播放器,看看能不能设置为不自动隐藏。
MediaController mc = new MediaController(this);
mc.setVisibility(View.INVISIBLE);
videoView.setMediaController(mc);
我是实现了,可以把VideoView自带的进度条隐藏。
用MediaController应该可以实现
如果用的VideoView的话,用如下代码:
MediaController mc = new MediaController(this);
mc.setVisibility(View.VISIBLE);
vvView.setMediaController(mc);
(8)android带进度条的按钮扩展阅读:
以文件处理为例
单个文件的进度处理方法:
使用CopyFileEx进行文件复制,这个函数专门提供了一个回调函数用来处理你的进度条,详细参见MSDN。
总体进度的处理方法:
如果一批文件,首先获得文件的数量count = 文件数量
设置进条的范围为0至count,每完成一个文件,就向前进一步。
㈨ 跪求一个 android 视频缓存完整demo(带进度条)
在做手机开发时,经常碰到一些比较耗时的操作,这个时候进度条就开始派上用场了。 这个demo展示了ProgressBar进度条和ProgressDialog进度框。 一、ProgressDialog进度框,效果如图所示: 代码如下: 复制代码 代码如下: //进度对话框按钮监听 class ProssButtonListener implements OnClickListener { @Override public void onClick(View v) { myDialog = ProgressDialog.show(ProgressbarDemo.this, "进度条标题", "进度条内容", true); new Thread() { public void run() { try { /* 在这里写上要背景运行的程序片段 */ /* 为了明显看见效果,以暂停3秒作为示范 */ sleep(3000); } catch (Exception e) { e.printStackTrace(); } finally { // 卸载所创建的myDialog对象。 myDialog.dismiss(); } } }.start(); /* 开始运行运行线程 */ } } 二、进度条对话框,这里用两种情况来动态显示进度条刻度 1、handle方法 效果图如下: 代码如下: 复制代码 代码如下: //进度条handle按钮监听 class ProssBarHandleButtonListener implements OnClickListener { @Override public void onClick(View v) { progressBarHandle.setVisibility(View.VISIBLE); myProssBarhandleText.setVisibility(View.VISIBLE); progressBarHandle.setMax(1000); new Thread() { public void run() { for(int i=0;i<=1000;){ try { /* 在这里写上运行的进度条 */ Message msg = new Message(); msg.what = 1; msg.getData().putInt("size", i); handler.sendMessage(msg);//handle发送消息 /* 为了明显看见效果,以暂停1秒作为示范 */ sleep(100); i+=10; } catch (Exception e) { handler.obtainMessage(-1).sendToTarget(); e.printStackTrace(); } } } }.start(); /* 开始运行运行线程 */ } } //handle接收消息 private Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { switch (msg.what) { case 1: progressBarHandle.setProgress(msg.getData().getInt("size")); float num = (float)progressBarHandle.getProgress()/(float)progressBarHandle.getMax(); int result = (int)(num*100); System.out.println("progressBarHandle.getProgress()======="+progressBarHandle.getProgress()); myProssBarhandleText.setText(result+ "%"); if(progressBarHandle.getProgress()==progressBarHandle.getMax()){ Toast.makeText(ProgressbarDemo.this, "下载成功", 1).show(); progressBarHandle.setVisibility(View.GONE); myProssBarhandleText.setVisibility(View.GONE); } break; case -1: Toast.makeText(ProgressbarDemo.this,"下载失败", 1).show(); break; } } }; 2、使用AsyncTask方法,效果图与handle效果一样 具体代码如下: 复制代码 代码如下: //进度条synctask按钮监听 class ProssBarSyncButtonListener implements OnClickListener { @Override public void onClick(View v) { new AsyncLoader().execute((Void)null); } } //AsyncTask 任务执行 class AsyncLoader extends AsyncTask<Void, Integer, Integer> { @Override // 在doInBackground方法执行前执行 protected void onPreExecute(){ progressBarHandle.setVisibility(View.VISIBLE); myProssBarhandleText.setVisibility(View.VISIBLE); progressBarHandle.setMax(100000); } // 做具体的耗时操作 protected Integer doInBackground(Void... params) { //这里以1万的进度条刻度来显示 int totalSize = 100000; for (int i = 0; i < 100000; ) { publishProgress(i); //通过推送消息传递数据给onProgressUpdate方法执行 i+=10; } return totalSize; } // 在doInBackground方法执行过程中执行 protected void onProgressUpdate(Integer... progress) { progressBarHandle.setProgress(progress[0]); float num = (float)progressBarHandle.getProgress()/(float)progressBarHandle.getMax(); int result = (int)(num*100); myProssBarhandleText.setText(result+ "%"); } // 在doInBackground方法结束后执行 protected void onPostExecute(Integer result) { Toast.makeText(ProgressbarDemo.this, "下载成功,下载了"+result, 1).show(); myProssBarhandleText.setVisibility(View.GONE); progressBarHandle.setVisibility(View.GONE); } } 点击下载DEMO示例
㈩ 在android中,在main.xml中有一个ProgressBar进度条组件和几个button按钮,按下button,进度条增值
用handler