Android访问网络系列之--访问图片
今天闲着无聊,顺便做了个android 访问网络图片的demo,希望与大家分享下:
下面是主要代码:
1.main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="vertical" ><TextViewandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:text="@string/imagepath" /><EditTextandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:text="http://10.191.92.7:8080/web/xiaoxiao.jpg"android:id="@+id/imagepath"/><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/button"android:id="@+id/button"/><ImageView android:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/imageView"/></LinearLayout>
这里的定义很简单:相信大家都可以看懂。
2.MainActivity.java
package ygc.yxb.image;import ygc.yxb.service.ImageService; import android.app.Activity; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.ImageView; import android.widget.Toast;public class MainActivity extends Activity {private EditText pathText;private ImageView imageView;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);//获得图片路径pathText=(EditText) this.findViewById(R.id.imagepath);//获得要显示的imageViewimageView=(ImageView) this.findViewById(R.id.imageView);//获得button按钮 Button button=(Button) this.findViewById(R.id.button);//注册button按钮的点击事件button.setOnClickListener(new ButtonClickListener());}private final class ButtonClickListener implements View.OnClickListener{@Overridepublic void onClick(View v) {String path=pathText.getText().toString();try {//业务逻辑层:ImageService类的getImage方法用以获取网络图片byte[] data = ImageService.getImage(path);//用字节数组所有信息生成位图对象Bitmap bitmap =BitmapFactory.decodeByteArray(data, 0, data.length);imageView.setImageBitmap(bitmap);//显示图片} catch (Exception e) {e.printStackTrace();Toast.makeText(getApplicationContext(), R.string.error, 1).show();}}} }
3.ImageService.java
package ygc.yxb.service;import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL;import ygc.yxb.utils.StreamTool;public class ImageService {/*** 获取网络图片的数据* @param path 网络图片路径* @return*/public static byte[] getImage(String path) throws Exception {URL url = new URL(path);HttpURLConnection conn=(HttpURLConnection)url.openConnection(); //基于HTTP协议的连接对象conn.setConnectTimeout(5000);//5秒conn.setRequestMethod("GET");//请求方式//判断请求是否成功if(conn.getResponseCode()==200){//定义输入流InputStream inStream = conn.getInputStream();return StreamTool.read(inStream);}return null;}}
4.StreamTool.java 输入流工具类。
package ygc.yxb.utils;import java.io.ByteArrayOutputStream; import java.io.InputStream;public class StreamTool {/*** 读取流中的数据* @param inStream* @return* @throws Exception*/public static byte[] read(InputStream inStream) throws Exception {ByteArrayOutputStream outputStream = new ByteArrayOutputStream();byte[] buffer = new byte[1024];int len = 0;//如果字节流中的数据不等于-1,就说明一直有,然后循环读出while( (len=inStream.read(buffer)) !=-1){//将读出的数据放入内存中 outputStream.write(buffer);}inStream.close();return outputStream.toByteArray();}}
5.AndroidManifest.xml 在清单文件配置访问网络的权限。
<!-- 访问internet权限 -->
<uses-permission android:name="android.permission.INTERNET"/>
通过以上代码,Android访问网络图片的例子就做完了。
另:这里的访问网络很简单:就是创建一个web项目,然后在webroot下面放入一张图片,然后将项目布置到web容器中,然后访问地址我这里是:http://localhost:8080/web/xiaoxiao.jpg,但Android 访问时,不能直接用localhost,而解决的方法是,用本机的局域网地址进行访问,最后我的地址是这样的:
http://10.191.92.7:8080/web/xiaoxiao.jpg
转载于:https://www.cnblogs.com/xiaobing-yang/archive/2012/08/07/2626441.html
Android访问网络系列之--访问图片相关推荐
- Android性能优化系列之Bitmap图片优化
在Android开发过程中,Bitmap往往会给开发者带来一些困扰,因为对Bitmap操作不慎,就容易造成OOM(Java.lang.OutofMemoryError - 内存溢出),本篇博客,我们将 ...
- Android Https网络连接失败,图片加载不出
问题手机 三星 安卓版本4.3 有些图片是https的URL 解决办法有有两种: 1,将https替换为http即可 2,将手机系统时间和网络时间同步就好了 如何同步: 手机我们进入我们手机里面的设定 ...
- 安卓访问网络超时闪退? 安卓如何访问网络?求解
使用HttpURLConnection发送请求获取返回数据,网络连接请求超时会发生闪退. 可能的原因有两种 返回的网络连接为空,后续通过该连接调用获取返回码或者获取返回数据等方法时会发生空指针错误造成 ...
- Android 如何访问网络
Android 如何访问网络 MainActivity代码块 Layout代码块 主界面图片: 运行结果: MainActivity代码块 一.绑定定控件,然后通过点击按钮获取url,由于打开url获 ...
- Android复习03(Get请求访问网络[详解]、获取文章列表)
2020年3月26日 第6周 星期四 https://ke.qq.com/webcourse/index.html#cid=989760&term_id=101085595&taid= ...
- Android使用HttpURLConnection访问网络
Android使用HttpURLConnection访问网络 一.管理网络状态 使用网络进行数据通信前,需要先获取网络状态. 使用ConnectivityManager获取网络状态步骤: 1.获取Co ...
- Android学习:访问网络
1.Get请求和Post请求简介 当客户端与服务器建立了网络链接之后,就可以发送Http请求了.Http请求通常分为Get请求和Post请求两种,下面分别介绍: 1.Get请求 Get:通过请求URI ...
- 解决android模拟器不能访问网络的问题
解决android模拟器不能访问网络的问题 参考文章: (1)解决android模拟器不能访问网络的问题 (2)https://www.cnblogs.com/oriental/p/11750330. ...
- android 检测当前wifi是否又网络,android判断连接的wifi是否能访问网络
如果只是想检测网络是否连接,则直接使用 isNetworkConnected() 如果想检测网络连通性(是否能访问网络),则 isNetworkConnected() 与 isNetworkOnlin ...
最新文章
- 如何删除linux的root权限,永久删除现代Linux的root权限
- Lync server 2013 之office web apps server 搭建步骤
- 如何解决2012年7月1日增加闰秒后引起linux系统重启问题
- oracle服务器找不到怎么解决,简析Oracle数据库常见问题及解决方案
- 2699元起!格力首款5G手机悄然上架:骁龙765G处理器
- elk服务重启_ELK开机启动 service文件内容
- UOS U盘复制性能,3M
- 图片标注工具Labelme的安装及使用方法
- GitHub上最全中华古诗词数据库又火了
- 酷Q机器人,QQ机器人使用教程
- 计算机病毒为了隐藏,识别计算机病毒的方法
- python 换国内源
- 云主机和电脑主机服务器有什么区别?
- csv文档转为tsv文档-csv to tsv
- 《加州消费者隐私法案》(CCPA)解读一:美国最严隐私法CCPA适用范围有哪些?
- 零基础学浙大翁恺C语言(2):计算
- 彻底删除的文件如何恢复?
- python编程 迷你世界_迷你世界迷你编程
- 管理运筹学笔记一之图解法
- Nginx学习(一)