安卓课程二十四 ImageView从网络上获取图片
本节采用两种方法创建Bitmap对象。主要过程是在xml中创建两个组件ImageView和Button。点击按钮下载图片,并做显示。创建了工具类HttpUtils,下载使用。
activity_main.xml
<LinearLayout 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=".MainActivity" android:orientation="vertical" > <Button android:id="@+id/button_" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/downImg" /> <ImageView android:id="@+id/imageView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:contentDescription="@string/hello_world"/> </LinearLayout>
HttpUtils.java
package com.example.imageviewhttp; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; public class HttpUtils { private final static String URL_PATH = "http://192.168.78.1:8081/web/pic/logo_2.jpg";//访问网络图片的路径 public HttpUtils() { } /** * 从网络中获取图片信息,以流的形式返回 * @return */ public static InputStream getImageViewInputStream(){ InputStream inputStream = null; try { URL url = new URL(URL_PATH); if(url!=null) { HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection(); httpURLConnection.setConnectTimeout(3000); httpURLConnection.setRequestMethod("GET"); httpURLConnection.setDoInput(true) ; int resonpseCode = httpURLConnection.getResponseCode(); if(resonpseCode == 200){ inputStream = httpURLConnection.getInputStream(); } } } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return inputStream; } /** * 从网络中获取图片西悉尼,以字节数组的形式放回 * @return */ public static byte[] getImageViewArray(){ byte [] data = null; InputStream inputStream = null; // 不需要关闭的输出流,直接写入内存中。 ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); try { URL url = new URL(URL_PATH); if(url!=null) { HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection(); httpURLConnection.setConnectTimeout(3000); httpURLConnection.setRequestMethod("GET"); httpURLConnection.setDoInput(true) ; int resonpseCode = httpURLConnection.getResponseCode(); int len = 0; byte[] b_data = new byte[1024]; if(resonpseCode == 200){ inputStream = httpURLConnection.getInputStream(); ; while ((len =inputStream.read(b_data)) !=-1){ outputStream.write(b_data, 0, len); } data = outputStream.toByteArray(); } } } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ if(inputStream!=null){try { inputStream.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }} } return data; } }
MainActivity.java
import java.io.InputStream; import android.app.Activity; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Bundle; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.ImageView; public class MainActivity extends Activity implements OnClickListener{ private ImageView imageview; private Button button; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); imageview = (ImageView) this.findViewById(R.id.imageView); button = (Button) this.findViewById(R.id.button_); button.setOnClickListener(this); } @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; } public void onClick(View v) { // 方法一 // InputStream inputStream = HttpUtils.getImageViewInputStream(); // Bitmap bitmap = BitmapFactory.decodeStream(inputStream); // 方法二 byte[] data = HttpUtils.getImageViewArray(); Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length); imageview.setImageBitmap(bitmap); } }
相关推荐
huha 2020-10-16
xfcyhades 2020-11-20
sgafdsg 2020-11-04
Michael 2020-11-03
fengyeezju 2020-10-14
ziyexiaoxiao 2020-10-14
业余架构师 2020-10-09
OuNuo0 2020-09-29
moses 2020-09-22
Angelia 2020-09-11
qinxu 2020-09-10
刘炳昭 2020-09-10
Nostalgiachild 2020-09-07
Nostalgiachild 2020-08-17
leavesC 2020-08-14
一青年 2020-08-13
AndroidAiStudy 2020-08-07
ydc0 2020-07-30
绿豆饼 2020-07-28