步骤一:配置清单文件AndroidManifest.xml,设置权限
<uses-permission android:name="android.permission.INTERNET" />
步骤二:配置布局文件
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:orientation="vertical"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.getinternetimg.MainActivity" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/titletips" />
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/txtPath"
android:text="@string/defpath"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btnget"
android:text="@string/btntext"
/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imgobj"
/>
</LinearLayout>
步骤三:配置字符串文件strings.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">网络获取图片</string>
<string name="titletips">网络图片查看器</string>
<string name="errtips">获取图片失败</string>
<string name="btntext">查看图片</string>
<string name="defpath">http://www.shixiu.net/d/file/p/2bc22002a6a61a7c5694e7e641bf1e6e.jpg</string>
</resources>
步骤四:编写访问网络图片的类:
package com.example.Services;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import com.example.UtilityTool.StreamUtility;
public class ImgService {
private final static String tag="ReadImage";
/**
* 获取网络图片的数据
* @param path 网络图片路径
* @return
*/
public static byte[] getImage(String path) throws Exception{
URL url = new URL(path);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();//基于HTTP协议连接对象
conn.setConnectTimeout(5000);
conn.setDoInput(true);
conn.setDoOutput(true);
conn.setUseCaches(false);
conn.setRequestMethod("GET");
conn.connect();
if(conn.getResponseCode() == 200){
InputStream inStream = conn.getInputStream();
return StreamUtility.read(inStream);
}
return null;
}
}
这里用到一个StreamUtility类,代码如下:
package com.example.UtilityTool;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
public class StreamUtility {
/**
* 读取流中的数据
* @param inStream
* @return
* @throws Exception
*/
public static byte[] read(InputStream inStream) throws Exception{
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len = 0;
while( (len = inStream.read(buffer)) != -1){
outStream.write(buffer, 0, len);
}
inStream.close();
return outStream.toByteArray();
}
}
最后一步:在activity中调用
package com.example.getinternetimg;
import java.io.InputStream;
import com.example.Services.ImgService;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.util.Log;
import android.view.*;
import android.widget.*;
public class MainActivity extends Activity {
private EditText pathText;
private ImageView imageView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
pathText = (EditText) this.findViewById(R.id.txtPath);
imageView = (ImageView) this.findViewById(R.id.imgobj);
Button button = (Button) this.findViewById(R.id.btnget);
button.setOnClickListener(new ButtonClickListener());
}
private final class ButtonClickListener implements View.OnClickListener{
public void onClick(View v) {
String path = pathText.getText().toString();
try{
byte[] data = ImgService.getImage(path);
Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
imageView.setImageBitmap(bitmap);//显示图片
}catch (Exception e) {
e.printStackTrace();
Toast.makeText(getApplicationContext(), R.string.errtips+e.getMessage(), 1).show();
}
}
}
}