异步操作AsyncTask(二)从网络下载图片(带下载进度数据)
来源:互联网 发布:惠天听书传销 知乎 编辑:程序博客网 时间:2024/06/05 16:27
package com.example.asyntaskproject;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.InputStream;import org.apache.http.HttpResponse;import org.apache.http.client.HttpClient;import org.apache.http.client.methods.HttpGet;import org.apache.http.impl.client.DefaultHttpClient;import android.app.Activity;import android.app.ProgressDialog;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.os.AsyncTask;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.ImageView;public class MainActivity extends Activity {private ImageView imageView;private Button button;//图片的网络地址private String image_path = "http://pic4.nipic.com/20090828/2366808_092035042961_2.jpg";private ProgressDialog dialog ;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);imageView = (ImageView) findViewById(R.id.imageView1);button = (Button) findViewById(R.id.button1);dialog = new ProgressDialog(this);dialog.setTitle("提示");dialog.setMessage("正在下载,请稍后..");dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);dialog.setCancelable(false);//不让屏幕失去焦点,即点其他的地方的时候进度条不消失button.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubnew MyTask().execute(image_path);}});}public class MyTask extends AsyncTask<String, Integer, Bitmap>{@Overrideprotected void onPreExecute() {// TODO Auto-generated method stubsuper.onPreExecute();dialog.show();}@Override protected void onProgressUpdate(Integer... values) {// TODO Auto-generated method stubsuper.onProgressUpdate(values);dialog.setProgress(values[0]);}@Overrideprotected Bitmap doInBackground(String... params) {// TODO Auto-generated method stubBitmap bitmap = null;//声明一个内存流,用于将他图片读取放到内存缓冲区中ByteArrayOutputStream outputStream = new ByteArrayOutputStream();InputStream inputStream = null;HttpClient httpClient = new DefaultHttpClient();HttpGet httpGet = new HttpGet(params[0]);HttpResponse httpResponse;try {httpResponse = httpClient.execute(httpGet);if(httpResponse.getStatusLine().getStatusCode() == 200){inputStream = httpResponse.getEntity().getContent();long file_length = httpResponse.getEntity().getContentLength();int len = 0;byte[] data = new byte[1024];int total_length = 0;while((len = inputStream.read(data)) != -1){total_length += len;//刻度百分比int value = (int)((total_length/(float)file_length)*100);publishProgress(value);outputStream.write(data, 0, len);}byte[] result = outputStream.toByteArray();bitmap = BitmapFactory.decodeByteArray(result, 0, result.length);}}catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}finally{if(inputStream != null){try {inputStream.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}return bitmap;}@Overrideprotected void onPostExecute(Bitmap result) {// TODO Auto-generated method stubsuper.onPostExecute(result);dialog.dismiss();imageView.setImageBitmap(result);}}}
免积分源代码下载
0 0
- 异步操作AsyncTask(二)从网络下载图片(带下载进度数据)
- 异步操作AsyncTask(一)从网络下载图片
- Android异步下载网络图片(其二:AsyncTask)
- Android异步下载网络图片(其二:AsyncTask)
- android快速响应(二)AsyncTask实例!异步下载图片
- 利用异步任务类AsyncTask下载图片,并且带进度对话框
- AsyncTask下载网络图片并显示下载进度
- android:异步任务asyncTask介绍及异步任务下载图片(带进度条)
- AsyncTask异步从网上下载图片
- Android异步下载网络图片(其二AsyncTask)
- AsyncTask 异步任务下载网络图片
- AsyncTask异步下载图片
- AsyncTask异步下载图片
- AsyncTask下载图片、显示进度
- Android 多线程AsyncTask 之二。异步下载网络图片带有进度条、
- Android异步下载网络图片(其一)
- Android异步下载网络图片(其二)
- Android异步下载网络图片(其一)
- 利用Java针对MySql封装的jdbc框架类 JdbcUtils 完整实现(包含增删改查、JavaBean反射原理,附源码)
- Tigase客户端Jaxmpp使用之发布订阅(三)
- linux shell 技巧篇
- C# 与sybase 数据库的连接
- 进度条的界面设计
- 异步操作AsyncTask(二)从网络下载图片(带下载进度数据)
- SQL查询每门课程的前几名
- 【职业生涯规划】从30岁到35岁:为你的生命多积累一些厚度
- xmms debug
- js获取项目路径
- jQuery.parseJSON(json)
- 手动安装.ocx控件
- JsUnit测试JS
- 本机与虚拟机互PING小结