简单实现Android读取网络图片到本地

简单实现Android读取网络图片到本地,第1张

概述今天在网上看到了一个关于读取网络文件的小视频,觉得不错,拿来与大家分享

今天在网上看到了一个关于读取网络文件的小视频,觉得不错,拿来与大家分享

思路

具体的思路比较的简单,但是思想非常的单纯。那就是输入一个网址,点击按钮,将从网络上获取的一张图片显示到一个ImageVIEw控件上。
这样看来,我们需要用到的核心就是网络 *** 作了。说白了,就是读取网络流文件了。

代码展示

首先是主界面的布局文件

<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" >  <EditText     androID:ID="@+ID/et_website"    androID:layout_wIDth="match_parent"    androID:layout_height="wrap_content"    androID:hint="please type the url "    />  <button     androID:ID="@+ID/btn_get"    androID:layout_wIDth="wrap_content"    androID:layout_height="wrap_content"    androID:text="Check"    />  <ImageVIEw     androID:ID="@+ID/iv_picture"    androID:layout_wIDth="match_parent"    androID:layout_height="wrap_content"    androID:src="@drawable/ic_launcher"    /></linearLayout>

 然后是主界面的逻辑代码

@H_301_24@package com.example.getphotobyxml;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;import com.example.service.ImageService;public class MainActivity extends Activity { private EditText mEt_url; private ImageVIEw mIv_picture; private button mBtn_get; /** * 初始化相关的需要使用到的ID */ public voID init() { mEt_url = (EditText) findVIEwByID(R.ID.et_website); mIv_picture = (ImageVIEw) findVIEwByID(R.ID.iv_picture); mBtn_get = (button) findVIEwByID(R.ID.btn_get); } @OverrIDe protected voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.activity_main); //记得要调用哦 init(); mBtn_get.setonClickListener(new OnClickListener() { @OverrIDe public voID onClick(VIEw v) { String website = mEt_url.getText().toString(); if (website == null || website.equals("")) { Toast.makeText(MainActivity.this,"请输入正确的网址哦!",Toast.LENGTH_LONG).show(); return; } byte[] bytes; try { bytes = ImageService.getimage(website); Bitmap bitmap = BitmapFactory.decodeByteArray(bytes,bytes.length); mIv_picture.setimageBitmap(bitmap); } catch (Exception e) { // Todo auto-generated catch block e.printstacktrace(); } } }); } /** * 从网络以XML的方式获得一张图片,并显示到一个ImageVIEw上 * 按钮事件可以直接不注册onClickListener,而使用这个方法 * @param vIEw */ public voID getPicture(VIEw vIEw) { String website = mEt_url.getText().toString(); if (website == null || website.equals("")) { Toast.makeText(this,Toast.LENGTH_LONG).show(); return; } byte[] bytes; try { bytes = ImageService.getimage(website); Bitmap bitmap = BitmapFactory.decodeByteArray(bytes,bytes.length); mIv_picture.setimageBitmap(bitmap); } catch (Exception e) { // Todo auto-generated catch block e.printstacktrace(); } }}

service 以及 tools助手

@H_301_24@package com.example.service;import java.io.inputStream;import java.net.httpURLConnection;import java.net.URL;import com.example.utils.StreamTool;/***图片服务的业务类*/public class ImageService { public static byte[] getimage(String website) throws Exception { URL url = new URL(website); httpURLConnection conn = (httpURLConnection) url.openConnection(); conn.setConnectTimeout(5000); conn.setRequestMethod("GET"); if(conn.getResponseCode()==200){ inputStream inputStream = conn.getinputStream(); byte[] bytes = StreamTool.read(inputStream); return bytes; } return "读取网络数据失败".getBytes(); }}@H_301_24@package com.example.utils;import java.io.ByteArrayOutputStream;import java.io.inputStream;/***专门用于将输入流转换成一个字节数组的utils类*/public class StreamTool { public static byte[] read(inputStream inputStream) throws Exception { ByteArrayOutputStream baos = new ByteArrayOutputStream(); byte[] buf = new byte[1024]; int len = 0; while((len = inputStream.read(buf))!=-1){ baos.write(buf,len); } baos.close(); return buf; }}

总结
这里面的代码是非常的简单的,我这里贴出代码的主要的目的是为了展示分层的思想,以及重构的艺术。
在代码中我们看到了,创建了专门的类来完成专门的工作。而且不同的层次的类,处理的业务也是不一样的。这样有助于我们以面向对象的方式编程,带来更加清晰的逻辑。

总结

以上是内存溢出为你收集整理的简单实现Android读取网络图片到本地全部内容,希望文章能够帮你解决简单实现Android读取网络图片到本地所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1148648.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存