android加载进度条
Ⅰ 怎样实现在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 绘制进度条
进度条一般是用来显示耗时操作的,如你图示,最终完成的时候刚好绕一圈,是一个计时器来确定进度条跑完一圈的时间,然后按时间的流逝来绘制进度条(也就是边框)。
我的思路是这样的,首先确定进度条的起始位置,也就是黑色背景图的上部中间(前提是获取到背景图片四个角角位置坐标(X,Y)),计算出图片的长宽,这样背景图片四个角的坐标都有了,进度条的起始坐标也有了,然后根据周长和定时器的时间确定我们每毫秒需要绘制多长,遇到拐角的时候判断一下进度条的实时坐标与背景图的拐角坐标是否一致,然后就拐个弯,继续绘制。
这是个思路,我过会儿调试一下
Ⅲ 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自定义双向进度条
想整个双向的进度条,就是可以选取播放范围的。
像这样:
然而官方控件里只有单向的。不要慌,我们自己画一个。
绘制一个进度条主要是三方面。1.样式,2.尺寸,3.操作监听。
注释基本上就把原理说明了一下。
然后就可以在程序中使用了。
相关GitHub项目地址: https://github.com/codeqian/android-class-lib
Ⅳ android 进度条样式 怎么改
Android系统提供了两大类进度条样式,长形进度条(progressBarStyleHorizontal) 和圆形进度条(progressBarStyleLarge)。
android 进度条样式更改:
第一种
(默认样式(中等圆形))
进度条用处很多,比如,应用程序装载资源和网络连接时,可以提示用户稍等,这一类进度条只是代表应用程序中某一部分的执行情况,而整个应用程序执行情况呢,则可以通过应用程序标题栏来显示一个进度条,这就需要先对窗口的显示风格进行设置"requestWindowFeature(Window.FEATURE_PROGRESS)"。
Ⅵ android progressbar 自动加载完毕
ndroid progressbar 自动加载完毕的处理方法为:
1、在主线程中创建子Thread,然后sendMessage给Handle。
2、Android asyncTask .,源码为:
public class LoadingActivity extends Activity {
private ProgressDialog dialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
//设置一个progressdialog的弹窗
dialog = ProgressDialog.show(this, null, "程序正在加载,请稍候...", true, false);
//启动一个处理loading业务的线程
new LoadingThread(this).start();
}
private class LoadingThread extends Thread {
private LoadingActivity activity;
public LoadingThread(LoadingActivity act) {
Log.d(">>>>>LoadingThread", "构造方法");
activity = act;
}
public void run() {
Log.d(">>>>>LoadingThread", "传递message");
//*********************
// 处理业务
//*********************
//发送消息
activity.mHandler.sendEmptyMessage(0);
}
}
//处理跳转到主Activity
private Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
Log.d(">>>>>Mhandler", "开始handleMessage");
Intent mIntent = new Intent();
mIntent.setClass(LoadingActivity.this, PalmHospital_main_Activity.class);
startActivity(mIntent);
LoadingActivity.this.finish();
Log.d(">>>>>Mhandler", "LoadActivity关闭");
if (dialog.isShowing())
dialog.dismiss();
}
};
}
Ⅶ android布局文件里的ProgressBar长形进度条怎么自定义样式
在windows操作系统下Android studio按照如下步骤自动义ProgressBar长形进度条的样式。
1、首先创建一个android项目,打开其中的XML布局文件,如下图:
Ⅷ Android水平进度条颜色和样式
java.lang.Object
↳android.view.View
↳android.widget.ProgressBar
直接子类:AbsSeekBar extends ProgressBar;间接子类:RatingBar, SeekBar。
ProgressBar有两种展示形式:
(1)android:progressBarStyle:默认进度条样式,不确定模式;(分大小)
(2)android:progressBarStyleHorizontal:水平进度条样式。
1、progress布局:
为改变进度条样式和颜色,需要复写Android系统自带的样式并引用:android:progressDrawable="@drawable/progressbar";
2、下面为drawable下progressbar.xml: