Android开发学习—— 下载网络图片

现在几乎所有的应用都在使用网络来达到浏览的目的。对于特定领域 使用xnpp协议 像即时通讯软件。但大多数还是使用HTTP协议来交互。

网络图片查看器

HTTP协议 下载网络 图片

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
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.he.MainActivity" > <Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="下载图片"
android:onClick="click"
/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/iv"
/> </RelativeLayout>
public class MainActivity extends Activity {

    protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
} public void click(View v) throws IOException{
//确定网址,此网址是图片的地址
String imgurl="http://127.0.0.1:8080/dd.jpg"; try {
//把网址封装为url对象
URL url = new URL(imgurl);
//获取客户端和服务器端的连接对象,此时还没有建立连接
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
//对连接对象进行初始化,设置请求方法
try {
conn.setRequestMethod("GET");
} catch (ProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
conn.setConnectTimeout(5000);//5s超时
conn.setReadTimeout(5000);//读取超时,网址是对的,流没有正确返回。
//发送请求,与服务器建立连接
conn.connect();
//请求成功,服务器会返回一个流
if(conn.getResponseCode()==200){
InputStream is = conn.getInputStream();
Bitmap bm = BitmapFactory.decodeStream(is);//读取流里的数据并构造位图对象
ImageView iv = (ImageView) findViewById(R.id.iv);
iv.setImageBitmap(bm); }
else{
Toast.makeText(this, "请求失败", 0).show();
}
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

* 添加权限

上一篇:guava学习--File


下一篇:JAVABEAN EJB POJO区别