zoukankan      html  css  js  c++  java
  • 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<String, Void, Bitmap> {
    		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);
    		}
    	}


  • 相关阅读:
    PHP的函数应用
    MyEclipse 使用Junit
    JAVASE知识点总结
    常见排序算法
    数据结构的java实现
    JDK1.5新特性总结
    Oracle练习题
    Oracle面试题2
    Oracle面试题1
    分别使用Statement和PreparedStatement对数据库进行操作
  • 原文地址:https://www.cnblogs.com/slgkaifa/p/6761581.html
Copyright © 2011-2022 走看看