AsyncTask与HttpURLConnection下载网络图片
来源:互联网 发布:玫瑰花 简笔画软件 编辑:程序博客网 时间:2024/06/05 18:27
使用AsyncTask可以更加方便的在子线程中对UI进行操作。
AsyncTask是个抽象类,使用它必须要创建一个子类去继承它。他有三个泛型的参数,
<?xml version="1.0" encoding="utf-8"?><RelativeLayout 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="yifang.zhsong.ansyctaskdemo.MainActivity"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Download" android:id="@+id/bt_download" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" android:layout_marginBottom="43dp" /> <ImageView android:layout_width="500dp" android:layout_height="500dp" android:id="@+id/iv_picture" /></RelativeLayout>
MainActivity部分的代码package yifang.zhsong.ansyctaskdemo;import android.app.ProgressDialog;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.os.AsyncTask;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.ImageView;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.InputStream;import java.net.HttpURLConnection;import java.net.URL;public class MainActivity extends AppCompatActivity { private Button button; private ImageView image; private ProgressDialog dia; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button = (Button) findViewById(R.id.bt_download); image = (ImageView) findViewById(R.id.iv_picture);//定义进度条 dia = new ProgressDialog(this); dia.setTitle("提示信息"); dia.setMessage("下载中,请稍后"); dia.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);//设置点击进度条外部,不响应; dia.setCancelable(false); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) {// TODO Auto-generated method stub new MyTask().execute(); } }); } //Sting 表示传入的值, Integer 代表进度 , Bitmap 代表返回的值 public class MyTask extends AsyncTask<String, Integer, Bitmap> { //任务执行之前的准备工作。 @Override protected void onPreExecute() {// TODO Auto-generated method stub dia.show(); } //主要完成耗时操作 @Override protected Bitmap doInBackground(String... arg0) {// TODO Auto-generated method stub HttpURLConnection connection = null; Bitmap bitmap = null; ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); InputStream inputStream = null; try { URL url = new URL("http://imglf0.nosdn.127.net/img/akF3Q3JLbzVNWExja3g3d1B5a0NRcW50OUFtNTBoNTRaYkRjdEo2WlBDeGRTRkNGUUVraGxnPT0.jpg?imageView&thumbnail=500x0&quality=96&stripmeta=0&type=jpg"); connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("GET"); connection.setConnectTimeout(8000); connection.setReadTimeout(8000); inputStream = connection.getInputStream();//先获得文件的总长度, int fileLength = connection.getContentLength(); int len = 0; byte[] data = new byte[1024]; int total_length = 0; int value = 0; while ((len = inputStream.read(data)) != -1) { total_length += len; value = ((total_length / fileLength) * 100);//调用update函数,更新进度 publishProgress(value); outputStream.write(data, 0, len); Thread.sleep(500); } byte[] result = outputStream.toByteArray(); bitmap = BitmapFactory.decodeByteArray(result, 0, result.length); inputStream.close(); outputStream.close(); connection.disconnect(); } catch (Exception e) {// TODO: handle exception e.printStackTrace(); } finally { if (inputStream != null) { try { inputStream.close(); outputStream.close(); connection.disconnect(); } catch (IOException e) {// TODO Auto-generated catch block e.printStackTrace(); } } } return bitmap; } //更新进度条 @Override protected void onProgressUpdate(Integer... values) {// TODO Auto-generated method stub dia.setProgress(values[0]); } //主要完成耗时操作 @Override protected void onPostExecute(Bitmap result) {// TODO Auto-generated method stub dia.dismiss(); image.setImageBitmap(result); } }}
0 0
- AsyncTask与HttpURLConnection下载网络图片
- HttpURLConnection下载网络图片
- HttpURLConnection下载网络图片
- AsyncTask 与 HttpURLConnection获取网络数据
- AsyncTask实现下载网络图片
- 利用AsyncTask下载网络图片
- 通过AsyncTask下载网络图片
- 网络连接+HttpUrlConnection+AsyncTask
- 使用HttpURLConnection从网络中下载图片
- Android异步下载网络图片(其二AsyncTask)
- (androidStudio)AsyncTask+进度条实现网络下载图片
- AsyncTask 异步任务下载网络图片
- Android - HttpURLConnection下载网络文件,加载网络图片
- AsyncTask详解与下载图片实例
- AsyncTask下载网络图片并显示下载进度
- android httpUrlConnection 方式从网络上面下载图片
- Android HttpURLConnection获取网络下载图片POST请求方式
- 使用HttpURLConnection下载图片
- 《Java》———JDBC的学习一
- bgcolor
- Pro Android学习笔记(一四六):触摸屏(5):自定义手势
- 编译busybox所遇到的bug
- java中HashMap的遍历
- AsyncTask与HttpURLConnection下载网络图片
- android 实现上下文菜单实例
- Android笔记
- img底部3px留白
- 华为上机--放苹果
- MySQL 添加 新用户
- 智能指针之shared_ptr
- LintCode算法题解
- UVA 11021 Tribles