Android开发入门之网络通信(网络图片查看器)

2024-06-03 05:38

本文主要是介绍Android开发入门之网络通信(网络图片查看器),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

第一步:新建一个Android工程命名为netimage目录结构如下图:


第二步:修改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:orientation="vertical"tools:context=".MainActivity" ><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/imagepath" /><EditTextandroid:id="@+id/et_imagepath"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="@string/path" /><Buttonandroid:id="@+id/btn_view"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/view" /><ImageViewandroid:id="@+id/iv"android:layout_width="wrap_content"android:layout_height="wrap_content" android:layout_gravity="center"/></LinearLayout>

strings.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources><string name="app_name">网络图片查看器</string><string name="action_settings">Settings</string><string name="hello_world">Hello world!</string><string name="imagepath">网络图片路径</string><string name="view">查看</string><string name="success">获取图片成功!</string><string name="fail">获取图片失败!</string><string name="path">http://p1.qhimg.com/d/_onebox/search.png</string></resources>

第三步:编写MianActivity类:

package cn.leigo.netimage;import java.io.IOException;import cn.leigo.service.ImageService;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.Toast;public class MainActivity extends Activity implements OnClickListener {private EditText mImagePathEditText;private Button mViewButton;private ImageView mImageView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mImagePathEditText = (EditText) findViewById(R.id.et_imagepath);mViewButton = (Button) findViewById(R.id.btn_view);mImageView = (ImageView) findViewById(R.id.iv);mViewButton.setOnClickListener(this);}@Overridepublic void onClick(View v) {String imagePath = mImagePathEditText.getText().toString();byte[] data;try {data = ImageService.getImage(imagePath);Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);mImageView.setImageBitmap(bitmap); // 显示图片Toast.makeText(this, R.string.success, Toast.LENGTH_SHORT).show();} catch (IOException e) {e.printStackTrace();Toast.makeText(this, R.string.fail, Toast.LENGTH_SHORT).show();}}}

业务类ImageService:

package cn.leigo.service;import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;import cn.leigo.utils.StreamTool;public class ImageService {/*** 获取网络图片的数据* * @param imagePath*            网络图片路径* @return* @throws IOException*/public static byte[] getImage(String imagePath) throws IOException {byte[] data = null;URL url = new URL(imagePath);HttpURLConnection conn = (HttpURLConnection) url.openConnection(); // 基于HTTP协议链接对象conn.setConnectTimeout(5000);conn.setRequestMethod("GET");if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) {InputStream inputStream = conn.getInputStream();data = StreamTool.read(inputStream);}return data;}}

工具类StreamTool:
package cn.leigo.utils;import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;public class StreamTool {/*** 读取流中的数据* * @param inputStream* @return* @throws IOException*/public static byte[] read(InputStream inputStream) throws IOException {ByteArrayOutputStream baos = new ByteArrayOutputStream();byte[] buffer = new byte[1024];int len = 0;while ((len = inputStream.read(buffer)) != -1) {baos.write(buffer, 0, len);}inputStream.close();return baos.toByteArray();}}

最后别忘了在AndroidManifest.xml文件中添加权限:
<uses-permission android:name="android.permission.INTERNET" />

运行上述工程查看效果图:


这篇关于Android开发入门之网络通信(网络图片查看器)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1026137

相关文章

SpringBoot使用OkHttp完成高效网络请求详解

《SpringBoot使用OkHttp完成高效网络请求详解》OkHttp是一个高效的HTTP客户端,支持同步和异步请求,且具备自动处理cookie、缓存和连接池等高级功能,下面我们来看看SpringB... 目录一、OkHttp 简介二、在 Spring Boot 中集成 OkHttp三、封装 OkHttp

利用Python开发Markdown表格结构转换为Excel工具

《利用Python开发Markdown表格结构转换为Excel工具》在数据管理和文档编写过程中,我们经常使用Markdown来记录表格数据,但它没有Excel使用方便,所以本文将使用Python编写一... 目录1.完整代码2. 项目概述3. 代码解析3.1 依赖库3.2 GUI 设计3.3 解析 Mark

Android Kotlin 高阶函数详解及其在协程中的应用小结

《AndroidKotlin高阶函数详解及其在协程中的应用小结》高阶函数是Kotlin中的一个重要特性,它能够将函数作为一等公民(First-ClassCitizen),使得代码更加简洁、灵活和可... 目录1. 引言2. 什么是高阶函数?3. 高阶函数的基础用法3.1 传递函数作为参数3.2 Lambda

利用Go语言开发文件操作工具轻松处理所有文件

《利用Go语言开发文件操作工具轻松处理所有文件》在后端开发中,文件操作是一个非常常见但又容易出错的场景,本文小编要向大家介绍一个强大的Go语言文件操作工具库,它能帮你轻松处理各种文件操作场景... 目录为什么需要这个工具?核心功能详解1. 文件/目录存javascript在性检查2. 批量创建目录3. 文件

Linux系统之主机网络配置方式

《Linux系统之主机网络配置方式》:本文主要介绍Linux系统之主机网络配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、查看主机的网络参数1、查看主机名2、查看IP地址3、查看网关4、查看DNS二、配置网卡1、修改网卡配置文件2、nmcli工具【通用

Android自定义Scrollbar的两种实现方式

《Android自定义Scrollbar的两种实现方式》本文介绍两种实现自定义滚动条的方法,分别通过ItemDecoration方案和独立View方案实现滚动条定制化,文章通过代码示例讲解的非常详细,... 目录方案一:ItemDecoration实现(推荐用于RecyclerView)实现原理完整代码实现

使用Python高效获取网络数据的操作指南

《使用Python高效获取网络数据的操作指南》网络爬虫是一种自动化程序,用于访问和提取网站上的数据,Python是进行网络爬虫开发的理想语言,拥有丰富的库和工具,使得编写和维护爬虫变得简单高效,本文将... 目录网络爬虫的基本概念常用库介绍安装库Requests和BeautifulSoup爬虫开发发送请求解

Android App安装列表获取方法(实践方案)

《AndroidApp安装列表获取方法(实践方案)》文章介绍了Android11及以上版本获取应用列表的方案调整,包括权限配置、白名单配置和action配置三种方式,并提供了相应的Java和Kotl... 目录前言实现方案         方案概述一、 androidManifest 三种配置方式

基于Python开发批量提取Excel图片的小工具

《基于Python开发批量提取Excel图片的小工具》这篇文章主要为大家详细介绍了如何使用Python中的openpyxl库开发一个小工具,可以实现批量提取Excel图片,有需要的小伙伴可以参考一下... 目前有一个需求,就是批量读取当前目录下所有文件夹里的Excel文件,去获取出Excel文件中的图片,并

Java实现数据库图片上传与存储功能

《Java实现数据库图片上传与存储功能》在现代的Web开发中,上传图片并将其存储在数据库中是常见的需求之一,本文将介绍如何通过Java实现图片上传,存储到数据库的完整过程,希望对大家有所帮助... 目录1. 项目结构2. 数据库表设计3. 实现图片上传功能3.1 文件上传控制器3.2 图片上传服务4. 实现