[android] 网络图片查看器
界面布局LinerLayout线性布局,ImageView控件,EditText控件 hint属性提示信息,Button控件。
Android:layout_weight=””属性,权重,只有控件的宽度和高度为0的时候才代表权重,否则它代表渲染的优先级,值越大优先级越低,默认是0,先渲染其他控件
singleLine属性 单行
业务逻辑,获取EditText的值放到ImageView里,实质上是http的get请求
获取EditText对象,通过findViewById()
获取值,通过调用EditText对象的getText()方法,调用toString()方法,调用trim()方法
调用TextUtils类的isEmpty()方法,判断是否为空,为空就Toast一下
发送get请求
获取Url对象,通过new Url(path),参数:path是String的路径,这里需要捕获异常
获取HttpUrlConnection对象,通过调用Url对象的openConnection()方法,返回UrlConnection对象,然后强制类型转换一下
调用HttpUrlConnection对象的setRequestMethod(method)方法,设置请求方法,method是GET
调用HttpUrlConnection对象的setConnectTimeout(millis),设置超时时间,millis是毫秒
调用HttpUrlConnection对象的setRequestProperty(field,newValue)方法,设置请求参数,比如请求头,User-Agent等
调用HttpUrlConnection对象的getResponseCode()方法,获取服务器的响应码,200 ok
调用HttpUrlConnection对象的getInputStream()方法,获取输入流,返回InputStream对象
调用BitmapFactory类的decodeStream(is)方法得到Bitmap对象,参数:is是InputStream对象
调用ImageView对象的setImageBitmap(bitmap)方法设置图片,参数:Bitmap对象
所有访问网络的都需要加权限android.permission.INTERNET
此时直接部署,会报一个错误NetworkOnMainThreadException,不允许在主线程上进行网络操作,下面的代码只在低版本时有效
package com.tsh.internetpic; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; import android.app.Activity; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Bundle; import android.text.TextUtils; import android.view.View; import android.widget.EditText; import android.widget.ImageView; import android.widget.Toast; public class MainActivity extends Activity { private EditText et_path; private ImageView iv_pic; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); et_path=(EditText) findViewById(R.id.et_path); iv_pic=(ImageView) findViewById(R.id.iv_pic); } public void getInternetImg(View v){ String path=et_path.getText().toString().trim(); if(TextUtils.isEmpty(path)){ Toast.makeText(this, "图片路径不能为空", 0).show(); }else{ try { URL url=new URL(path); HttpURLConnection conn=(HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET"); conn.setConnectTimeout(5000); conn.setRequestProperty("User-Agent", ""); int code=conn.getResponseCode(); if(code==200){ InputStream is=conn.getInputStream(); Bitmap bp=BitmapFactory.decodeStream(is); iv_pic.setImageBitmap(bp); }else{ Toast.makeText(this, "网络连接超时", 0).show(); } } catch (Exception e) { e.printStackTrace(); } } } }
相关文章
- Jitpack发布Android库出现Direct local .aar file dependencies are not supported when building an AAR
- 关于Android12安装apk出现-108异常INSTALL_PARSE_FAILED_MANIFEST_MALFORMED的解决方法
- Android 多module情况下module依赖aar问题处理
- Android7.0以上的分享图片文件错误及解决方法
- Android开发 对接微信分享SDK总结
- Android RecyclerView使用ListAdapter高效刷新数据
- Android自动化测试工具调研
- Android 自动取色并设置沉浸式状态栏
- Java 断点下载(下载续传)服务端及客户端(Android)代码
- Android自定义View学习(1)——基础知识介绍
- Android webview只加载10%且出现白屏问题排查解决
- Android Studio安装插件重启插件消失
- Android Swtich开关样式调整
- Android 实现开机自启APP
- 关于TornadoFx和Android的全局配置工具类封装实现及思路解析
- Android shape与selector标签使用
- Android8.0 后台服务保活的一种思路
- 关于Android安装apk出现解析包异常问题情况总结
- Android 接入腾讯IM即时通信(详细图文)
- Android 语音播放(文字TTS)