Android 异步从网络上下载图片
16lz
2021-01-23
Android 异步从网络上下载图片
package com.example.android_asynctask;import org.apache.http.HttpEntity;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 org.apache.http.util.EntityUtils;import android.os.AsyncTask;import android.os.Bundle;import android.app.Activity;import android.app.ProgressDialog;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.view.Menu;import android.view.View;import android.widget.Button;import android.widget.ImageView;public class MainActivity extends Activity { private Button button; private ImageView imageView; private String image_Path = "http://e.hiphotos.baidu.com/image/pic/item/2fdda3cc7cd98d10b510fdea233fb80e7aec9021.jpg"; private ProgressDialog dialog; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button = (Button) findViewById(R.id.button1); imageView = (ImageView) findViewById(R.id.imageView1); dialog = new ProgressDialog(this); dialog.setTitle("提示信息"); dialog.setMessage("正在下载,请稍候..."); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub new MYTask().execute(image_Path); } }); } /** * 使用异步任务的规则: 1、申明的类继承AsyncTask 标注三个参数的类型 * 2、第一个参数表示要执行的任务,通常是网络的路径;第二个参数表示进度的刻度,第三个参数表示任务执行的返回结果 * * @author liende * */ public class MYTask extends AsyncTask{ /** * 表示任务执行之前的操作 */ @Override protected void onPreExecute() { // TODO Auto-generated method stub super.onPreExecute(); dialog.show(); } /** * 主要是完成耗时的操作 */ @Override protected Bitmap doInBackground(String... arg0) { // TODO Auto-generated method stub // 使用网络连接类HttpClient类王城对网络数据的提取 HttpClient httpClient = new DefaultHttpClient(); HttpGet httpGet = new HttpGet(arg0[0]); Bitmap bitmap = null; try { HttpResponse httpResponse = httpClient.execute(httpGet); if (httpResponse.getStatusLine().getStatusCode() == 200) { HttpEntity httpEntity = httpResponse.getEntity(); byte[] data = EntityUtils.toByteArray(httpEntity); bitmap = BitmapFactory .decodeByteArray(data, 0, data.length); } } catch (Exception e) { // TODO: handle exception } return bitmap; } /** * 主要是更新UI的操作 */ @Override protected void onPostExecute(Bitmap result) { // TODO Auto-generated method stub super.onPostExecute(result); imageView.setImageBitmap(result); dialog.dismiss(); } } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; }}
更多相关文章
- Android HttpClient网络通信
- mono for android 读取网络远程图片
- Android File文件操作
- Android---网络编程之Retrofit2整体结构了解以及+Okhttp3+rxjava
- 原生态Android操作介绍之一
- Android 网络协议
- UI布局参数(持续更新)
- Android---网络编程之OkHttp3整体结构了解以及使用