Android 網絡下載圖片

2中方法:

1.

public byte[] downloadResource(Context context, String url)
			throws ClientProtocolException, IOException {
		isStop = false;
		ByteArrayBuffer buffer = null;
		HttpGet hp = new HttpGet(url);
		httpClient = new DefaultHttpClient();
		String netType = isNetType(context);
		if (netType != null & netType.equals("cmwap")) {
			HttpHost proxy = new HttpHost("10.0.0.172", 80);
			httpClient.getParams().setParameter(ConnRouteParams.DEFAULT_PROXY,
					proxy);
		}
		HttpConnectionParams.setConnectionTimeout(httpClient.getParams(),
				5 * 1000);
		HttpConnectionParams.setSoTimeout(httpClient.getParams(), 60 * 1000);
		
		HttpResponse response = httpClient.execute(hp);
		if (response.getStatusLine().getStatusCode() == 200) {
			inputstream = response.getEntity().getContent();
			if (inputstream != null) {
				int i = (int) response.getEntity().getContentLength();
				buffer = new ByteArrayBuffer(1024);
				byte[] tmp = new byte[1024];
				int len;
				while (((len = inputstream.read(tmp)) != -1)
						&& (false == isStop)) {
					buffer.append(tmp, 0, len);
				}
			}
			cancel();
		}
		return buffer.toByteArray();
	}

調用方法:

protected Bitmap doInBackground(WonderfulprogramInfo... params)
		{
			Bitmap bitmap = null;
			try
			{
				String urls = Constant.url + params[0].getWonderfulImgUrl();
				boolean isExists = Files.compare(urls);
				if (isExists == false)
				{	//網絡下載圖片數據
					Net net = new Net();
					byte[] data = net.downloadResource(HomeActivity.this, urls);
					bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
					imagesCache.put(urls, bitmap); // 把下載好的圖片保存到緩存中
					Files.saveImage(urls, data);
				} else
				{	//本地讀取圖片數據
					byte[] data = Files.readImage(urls);
					BitmapFactory.Options opt = new BitmapFactory.Options();
					opt.inPreferredConfig = Bitmap.Config.RGB_565;
					opt.inPurgeable = true;
					opt.inInputShareable = true;
					// //獲取資源圖片
					// InputStream is =
					// context.getResources().openRawResource(resId);
					// return BitmapFactory.decodeStream(is,null,opt);

					bitmap = BitmapFactory.decodeByteArray(data, 0, data.length, opt);
					imagesCache.put(urls, bitmap); // 把下載好的圖片保存到緩存中
				}

方法二:

class DownLoadTask extends AsyncTask {
		private ImageView imageView;
		private Integer positions;

		public DownLoadTask(ImageView view, int position) {
			imageView = view;
			this.positions = position;
		}

		protected Bitmap doInBackground(String... params) {
			URL url;
			try {
				url = new URL(params[0]);
				InputStream is = url.openStream();
				BitmapFactory.Options opt = new BitmapFactory.Options();
				opt.inPreferredConfig = Bitmap.Config.RGB_565;
				opt.inPurgeable = true;
				opt.inInputShareable = true;
				// 獲取資源圖片
				Bitmap bitmap = BitmapFactory.decodeStream(is, null, opt);
				HomeActivity.TopGalleryBitmap.put(positions, bitmap);
				return bitmap;
			} catch (OutOfMemoryError err) {
				err.printStackTrace();
			} catch (MalformedURLException e) {
				e.printStackTrace();
			} catch (IOException e) {
				e.printStackTrace();
			}

			return null;
		}

		protected void onPostExecute(Bitmap result) {
			super.onPostExecute(result);
			imageView.setImageBitmap(result);
		}
	}

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *