ImageView 从网络下载图片

首先先说明一下,这个从网络下载图片的方法,我自己也不是很懂,只是敲了一下代码实现的。

因为要用到HTTP协议,在android模拟器上,URL的地址我是用到自己myeclipse服务器上的一张图片.

还有的是,一般来说从网络去下载文件图片的信息时,应该是用多线程去处理的,但是因为我还不是很懂线程问题,这里的下载方法写在了主线程当中,会很慢,如果是URL连接到网络图片就是例如百度图片那里,程序会崩溃,提示该程序无反应,等待OR强行关闭。

layout.xml文件中代码很简单,就是两个控件

    <ImageView 
        android:id="@+id/imageview"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
    <Button 
        android:id="@+id/button"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="下载网络图片"/>



因为要用到一个HTTP协议,所以要新建一个HTTP工具类,(新建HTTP.java)

这里要用到流的方法,还有一个HttpURLConnection类,URLConnection是个抽象类,它有两个直接子类分别是HttpURLConnection和JarURLConnection。另外一个重要的类是URL,通常URL可以通过传给构造器一个String类型的参数来生成一个指向特定地址的URL实例,每个 HttpURLConnection 实例都可用于生成单个请求。还有另外一个类InputStream:它的作用是标志那些从不同数据起源产生输入的类

package com.example.ll_imageview_http;

import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;

public class HTTP {

	private final static String URL_STRING = "http://192.168.191.1:8080/myhttp/PT1";// 访问网络图片的路径

	public HTTP() {
		// TODO Auto-generated constructor stub
	}

	/**
	 * 从网络中获取图片信息,以流的形式返回;
	 * 
	 * @return
	 */

	public static InputStream getImageInputStream() throws IOException {
		InputStream inputStream = null;

		URL url = new URL(URL_STRING);
		if (url != null) {
			HttpURLConnection httpURLConnection = (HttpURLConnection) url
					.openConnection();
			httpURLConnection.setConnectTimeout(10000); // 设置连接超时的时间
			httpURLConnection.setRequestMethod("GET");
			httpURLConnection.setDoInput(true);

			int response_code = httpURLConnection.getResponseCode();
			if (response_code == 200) {
				inputStream = httpURLConnection.getInputStream();
			}
		}

		return inputStream;

	}

}



然后在MainActivity.java文件中,又用到了BitmapFactory这个类,用作图像处理

package com.example.ll_imageview_http;

import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;

import android.os.Bundle;
import android.app.Activity;
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 = null;
	private ImageView imageView = null;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		button = (Button) findViewById(R.id.button);
		imageView = (ImageView) findViewById(R.id.imageview);
		button.setOnClickListener(new View.OnClickListener() {

			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				try {
					InputStream inputStream = HTTP.getImageInputStream();
					
					Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
					imageView.setImageBitmap(bitmap);
				} catch (IOException e) {
					// TODO: handle exception
				}
			}
		});
	}

	@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;
	}

}







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值