异步图片加载 Android

import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

import android.app.ProgressDialog;
import android.content.Context;
import android.content.res.AssetManager;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.os.AsyncTask;
import android.view.View;
import android.view.ViewGroup.LayoutParams;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;

/**
 * 异步下载图片
 *
 * @author sy
 *
 */
public class ImageDownLoadAsyncTask extends AsyncTask<Void, Void, Bitmap> {
 private String imagePath;
 private ImageView imageView;
 private static final String ALBUM_PATH = "/sdcard/pb";
 private Context context;
 private AssetManager assetManager;
 private int Image_width;// 显示图片的宽度
 private final String file = "images/";
 private LinearLayout progressbar;
 private TextView loadtext;

 /**
  * 构造方法
  *
  * @param context
  * @param imagePath
  * @param imageView
  */
 public ImageDownLoadAsyncTask(Context context, String imagePath,
   ImageView imageView, int Image_width) {
  this.imagePath = imagePath;
  this.imageView = imageView;
  this.context = context;
  assetManager = this.context.getAssets();
  this.Image_width = Image_width;
 }

 public void setLoadtext(TextView loadtext) {
  this.loadtext = loadtext;
 }

 public void setProgressbar(LinearLayout progressbar) {
  this.progressbar = progressbar;
 }

 @Override
 protected Bitmap doInBackground(Void... params) {

  try {
   InputStream inputStream = assetManager.open(file + imagePath);
   Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
   return bitmap;
  } catch (IOException e) {
   e.printStackTrace();
  }
  return null;
 }

 /*
  * (non-Javadoc)
  *
  * @see android.os.AsyncTask#onPostExecute(java.lang.Object)
  */
 @Override
 protected void onPostExecute(Bitmap drawable) {
  // TODO Auto-generated method stub
  super.onPostExecute(drawable);
  if (drawable != null) {
   LayoutParams layoutParams = imageView.getLayoutParams();
   int height = drawable.getHeight();// 获取图片的高度.
   int width = drawable.getWidth();// 获取图片的宽度
   layoutParams.height = (height * Image_width) / width;

   imageView.setLayoutParams(layoutParams);
   imageView.setImageBitmap(drawable);
  }
  if (progressbar.isShown() || loadtext.isShown()) {
   progressbar.setVisibility(View.GONE);
   loadtext.setVisibility(View.GONE);
  }

 }

 @Override
 protected void onPreExecute() {
  super.onPreExecute();
  if (!loadtext.isShown()) {
   loadtext.setVisibility(View.VISIBLE);
  }

 }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值