`
01jiangwei01
  • 浏览: 540886 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

安卓课程二十四 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);
	}

}

 

分享到:
评论

相关推荐

    Android课程设计源码仿QQ音乐播放器安卓版项目

    【Android课程设计源码仿QQ音乐播放器安卓版项目】是一个针对Android开发的学习资源,旨在帮助学生或开发者了解如何在Android平台上构建一个类似QQ音乐的应用。这个项目涵盖了多个关键的Android开发知识点,包括用户...

    运动安卓设计app android 课程设计

    7. **第三方库**:许多开源库可以帮助简化开发过程,例如Retrofit用于网络请求,Glide或Picasso用于图片加载, ROOM数据库库用于更现代的数据持久化等。 8. **Android Studio**:作为官方的集成开发环境(IDE),...

    安卓课程设计(含报告)

    5. **查看图片功能**:在安卓应用中,显示图片通常用到ImageView组件,加载图片可能需要使用像Glide或Picasso这样的第三方库,它们能优化图片的加载和显示,处理网络图片和本地图片的加载问题。 6. **安卓布局设计*...

    安卓(Android)期末课程设计-图片浏览器.zip

    《安卓(Android)期末课程设计-图片浏览器》 在当今移动互联网时代,Android平台作为全球最流行的智能手机操作系统之一,为开发者提供了广阔的创新空间。对于学习Android编程的学生来说,期末课程设计是一个展示...

    Gallery从SD卡中获取图片,并显示.zip

    4. **获取图片路径**:从SD卡上获取图片的完整路径,可以结合`File`对象和`listFiles()`方法。遍历得到的文件对象,检查文件是否为图片(常见后缀如.jpg, .png)。 5. **加载图片**:Android提供了多种方式加载图片...

    Android课程设计——安卓旅行日志APP.zip

    【Android课程设计——安卓旅行日志APP】 在本次Android课程设计中,我们将专注于构建一个功能丰富的安卓旅行日志应用程序。这个应用将为用户提供记录、管理和分享他们的旅行经历的平台,充分展示Android开发技术的...

    Android 课设 在线订餐项目源码(含apk)

    本项目是一个基于Android平台的在线订餐系统,适用于学习Android应用开发的学生进行课程设计或实践。这个项目提供了完整的源码,包含实现在线订餐功能的所有模块,并附带了一个可安装的APK文件,方便在Android模拟器...

    安卓(Android)期末课程设计-食谱.rar

    【安卓(Android)期末课程设计-食谱】项目是一个针对K12阶段学生设计的Android应用实例,旨在帮助学生学习并实践Android应用开发。这个项目适用于那些正在学习Android编程,并需要完成期末作业的学生。它提供了一个...

    新浪微博安卓客户端课程设计报告.docx

    【描述】:本报告详细介绍了移动互联网开发课程设计项目,即在安卓平台上开发一款简易的新浪微博客户端。通过这个项目,学生将提升安卓程序开发技能,学习认证协议原理,并掌握如何使用新浪提供的API接口。 **知识...

    Android平台的图像控件,可以异步加载网络图片、项目资源和本地图片,并且支持双指缩放、图片的基本处理.zip

    对于项目资源和本地图片的加载,我们可以直接通过Android的Resources类获取图片资源,或者通过FileInputStream读取本地文件。这些方法同样需要在后台线程执行,然后将结果传递回主线程进行显示。 接下来是双指缩放...

    Android课程设计源码空气质量指数和PM2.5应用

    该Android课程设计项目主要关注的是空气质量指数(AQI)和PM2.5的实时查询与展示,这在当今环保意识日益增强的社会中具有很高的实用价值。PM2.5是指空气中直径小于或等于2.5微米的颗粒物,对人类健康和环境影响较大...

    Android 仿安卓美团界面-IT计算机-毕业设计.zip

    【Android仿安卓美团界面开发详解】 在Android应用开发领域,毕业设计往往是一个展现技术实力和个人创新能力的重要环节。本项目——“Android仿安卓美团界面”是一个典型的案例,它旨在模仿美团APP的用户界面,帮助...

    安卓(Android)期末课程设计-个人相册.zip

    【Android期末课程设计-个人相册】项目是一个适用于K12阶段学生学习和完成期末作业的实例,它展示了如何在Android平台上开发一个个人相册应用。这个项目可以帮助学生理解和掌握Android应用开发的基本概念和技能,...

    药物购买App(电商类)安卓课程项目-shoppingapp.zip

    在本课程项目“药物购买App(电商类)安卓课程项目-shoppingapp.zip”中,我们将深入探讨如何构建一个基于Android平台的电商应用,专注于药品销售。这个项目不仅涵盖了基础的安卓应用开发技术,还涉及到电商应用特有...

    基于Java的Android应用程序开发-24点游戏源码+详细项目说明.zip

    基于Java的Android应用程序开发-24点游戏源码+详细项目说明.zip 基于Java的Android应用程序开发-24点游戏源码+详细项目说明.zip 基于Java的Android应用程序开发-24点游戏源码+详细项目说明.zip 【项目介绍】 该资源...

    课程设计Gallery从SD卡中获取图片,并显示源代码下载

    在Android开发中,"课程设计Gallery从SD卡中获取图片,并显示"是一个常见的应用场景,它涉及到用户界面(UI)的设计、文件系统操作以及图像处理等多个技术领域。在本项目中,我们将深入探讨如何实现这个功能。 首先...

    软件工程课程设计-爱篮球论坛-Android端.zip

    爱篮球论坛可能会使用到各种UI组件,如ListView、RecyclerView展示论坛帖子,EditText供用户输入评论,Button实现交互功能,以及ImageView展示图片等。同时,我们还需要考虑如何使用Adapter和ViewHolder模式优化列表...

    吴芳的android期末考试作业

    Android系统提供了丰富的API,如Bitmap类用于加载和显示图片,ImageView组件则用于在界面上展示图片。在设计图片查看器时,开发者需要考虑如何高效地加载大图,避免内存溢出,这可能涉及到Bitmap的解码方式(如使用...

    安卓仿QQ毕设带开题报告和论文

    【安卓仿QQ毕设】是针对计算机科学与技术专业学生设计的一个毕业设计项目,主要目标是构建一个类似于腾讯QQ的移动应用,适用于Android操作系统。这个项目不仅提供了源代码,还包含【开题报告】和【论文】,为学生...

    基于Android的新浪微博项目开发程序及介绍

    11. **ImageView**:显示图片的视图,可以结合Glide或Picasso等库实现图片加载优化。 12. **RecyclerView**:替代ListView的高效列表控件,支持滚动优化和复杂的视图复用策略,适合展示大量数据如微博列表。 13. *...

Global site tag (gtag.js) - Google Analytics