首先先说明一下,这个从网络下载图片的方法,我自己也不是很懂,只是敲了一下代码实现的。
因为要用到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;
}
}