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);}}}
相关文章推荐
- HTTPS的误解(二)
- 浅谈HTTP中Get与Post的区别
- HttpClient+ViewPager自动轮播
- 聊聊 iOS 中的网络加密
- Android判断网络状态
- 没想到!网络美女直播背后的真相居然是这样
- HttpClient——Get,Post
- HttpURLConnection——get,post
- HttpEntity转换Inputstream(红色)加XmlPull解析
- 证书透明度Certificate Transparency
- 证书透明度Certificate Transparency
- 通过NSURLProtocol拦截HTTP转HTTPS来整合SPDY的记录
- .Net MVC Redirect出现:服务器无法在已发送 HTTP 标头之后设置状态解决方案
- HTTP协议详解
- 谈谈MVVM和链式网络请求架构
- App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Te
- TCP/IP
- Servlet和HTTPServlet的区别
- Deep Learning学习 之 卷积神经网络(CNN)
- Javase网络通讯(socket编程)群聊系统