android中获取网络图片
16lz
2021-01-23
本主要介绍在android如何获取网络图片的方法,其源代码如下:
- packagecom.demo.lc;
- importjava.io.ByteArrayOutputStream;
- importjava.io.IOException;
- importjava.io.InputStream;
- importjava.net.HttpURLConnection;
- importjava.net.URL;
- importandroid.app.Activity;
- importandroid.graphics.BitmapFactory;
- importandroid.os.Bundle;
- importandroid.view.View;
- importandroid.view.View.OnClickListener;
- importandroid.widget.Button;
- importandroid.widget.EditText;
- importandroid.widget.ImageView;
- importandroid.widget.Toast;
- publicclassImageViewActivityextendsActivityimplementsOnClickListener{
- /**网络路径输入框*/
- privateEditTextmEt_url=null;
- /**读取网络图片*/
- privateButtonmBtn_read=null;
- /**显示网络图片*/
- privateImageViewmIv_show=null;
- /**路径Url*/
- privateURLmUrl=null;
- /**http连接*/
- privateHttpURLConnectionmConn=null;
- /**存储图片的二进制数组*/
- privatebyte[]mPic=null;
- @Override
- publicvoidonCreate(BundlesavedInstanceState){
- super.onCreate(savedInstanceState);
- super.setContentView(R.layout.main);
- //初始化组件
- initWidget();
- this.mBtn_read.setOnClickListener(this);
- }
- privatevoidinitWidget(){
- //实例化EditText
- mEt_url=(EditText)super.findViewById(R.id.et_urlpath);
- //实例化Button
- mBtn_read=(Button)super.findViewById(R.id.btn_display);
- //实例化ImageView
- mIv_show=(ImageView)super.findViewById(R.id.iv_show);
- }
- @Override
- publicvoidonClick(Viewv){
- InputStreammIs=null;
- try{
- //实例化mUrl
- mUrl=newURL(mEt_url.getText().toString());
- //建立Http网络连接
- mConn=(HttpURLConnection)mUrl.openConnection();
- //设置请求方式为GET
- mConn.setRequestMethod("GET");
- //设置超时时间为5秒
- mConn.setConnectTimeout(5000);
- //获取图片的输入
- mIs=mUrl.openStream();
- //获取图片的二进制数组
- mPic=getByteArray(mIs);
- System.out.println(mPic.length);
- mIs.close();
- }catch(Exceptione){
- //当连接超时的时候会弹出Toast
- Toast.makeText(this,R.string.error,100).show();
- e.printStackTrace();
- }
- mIv_show.setImageBitmap(BitmapFactory.decodeByteArray(mPic,0,mPic.length));
- }
- privatebyte[]getByteArray(InputStreamis){
- //用于向内存中写字节的字节数组输出流
- ByteArrayOutputStreambos=newByteArrayOutputStream();
- //字节数组缓冲区
- byte[]temp=newbyte[1024];
- //读取字节的长度
- intlen=0;
- try{
- //以二进制的形式读入
- while((len=is.read(temp))!=-1){
- bos.write(temp,0,len);
- }
- is.close();
- }catch(IOExceptione){
- e.printStackTrace();
- }
- //转化为字节数组
- returnbos.toByteArray();
- }
- }
效果如下:
更多相关文章
- Android屏幕截图并保存截取屏幕的图片到指定文件
- Android保存图片到本地或者数据库,并通知相册更新
- android两种方式实现圆形图片
- android Imageview 图片覆盖具体实现
- Android 缩放图片
- Android截屏及图片解析
- Android 利用animation-list自定义progressbar动画出现图片平铺