您的位置:首页 > 理论基础 > 计算机网络

AsyncTask 异步加载网络图片简单应用

2016-05-12 09:41 579 查看
这个是一个加载网络图片资源的小Demo可以很好地解释AsyncTask的工作流程布局文件如下所示
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:padding="16dp"android:layout_width="match_parent"android:layout_height="match_parent"><ImageViewandroid:id="@+id/asyimg"android:layout_width="match_parent"android:layout_height="match_parent" /><ProgressBarandroid:id="@+id/asyprog"android:visibility="gone"android:foregroundGravity="center"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerVertical="true"android:layout_centerHorizontal="true" /></RelativeLayout>
MainActivity代码
package com.imooc.www.moocdemo;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.os.AsyncTask;import android.os.Bundle;import android.os.PersistableBundle;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.ImageView;import android.widget.ProgressBar;import java.io.BufferedInputStream;import java.net.URL;import java.io.IOException;import java.io.InputStream;import java.net.URLConnection;/*** Created by Administrator on 2016/5/12.*/public class AsyncImageActivity extends AppCompatActivity {private ImageView mImageView;private ProgressBar mProgressBar;private static String URL = "http://img.my.csdn.net/uploads/201504/12/1428806103_9476.png";@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.asyncimageactivity);mImageView = (ImageView) findViewById(R.id.asyimg);mProgressBar = (ProgressBar) findViewById(R.id.asyprog);//设置传递进来的参数new MyImageAsyncTask().execute(URL);}class MyImageAsyncTask extends AsyncTask<String, Void, Bitmap> {@Overrideprotected Bitmap doInBackground(String... params) {//获取传进来的参数 params为参数的意思 参数的个数不确定 params【0】表示获取第一个参数要注意一下String url = params[0];Bitmap bitmap = null;URLConnection connection;InputStream is;try {connection = new URL(url).openConnection();is = connection.getInputStream();BufferedInputStream bis = new BufferedInputStream(is);//通过decodeStream将输入流解析成bitmapbitmap = BitmapFactory.decodeStream(bis);//关闭输入流is.close();bis.close();} catch (IOException e) {e.printStackTrace();}//将bitmap作为返回值返回return bitmap;}@Overrideprotected void onPreExecute() {super.onPreExecute();mProgressBar.setVisibility(View.VISIBLE);}@Overrideprotected void onPostExecute(Bitmap bitmap) {super.onPostExecute(bitmap);mProgressBar.setVisibility(View.GONE);mImageView.setImageBitmap(bitmap);}@Overrideprotected void onProgressUpdate(Void... values) {super.onProgressUpdate(values);}}}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: