熟悉Android---使用imageView加载网络图片
补充
使用Glide框架只要一行代码就可以搞定图片的显示,功能更强大。都2022年了,有好用的框架那必须要用啊。Glide框架使用请移步至郭霖大神的博客:
https://blog.csdn.net/guolin_blog/article/details/53759439
前言
Android 4.0 以后的版本,UI线程不允许有耗时操作,所以请求网络图片需要运行在子线程;
加载图片的代码参考:
https://zhidao.baidu.com/question/537762079.html
效果图
(待补充)
图片链接:
https://img-home.csdnimg.cn/images/20201124032511.png
示例图片:
布局文件
MainActivity.xml
<LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"><ImageViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/img1"/></LinearLayout>
整体思路
第一步:
在UI线程定义 网络图片链接;
第二步:
新建子线程请求图片,请求结果为bitmap;
第三步:
在UI线程将图片加载出来;
MainActivity.java
public class MainActivity extends Activity {private ImageView imageView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);imageView = findViewById(R.id.img1);URL url = null;try {url = new URL("https://img-home.csdnimg.cn/images/20201124032511.png");requestImg(url);} catch (Exception e) {e.printStackTrace();}}private void requestImg(final URL imgUrl){new Thread(new Runnable() {@Overridepublic void run() {Bitmap bitmap = null;try {bitmap = BitmapFactory.decodeStream(imgUrl.openStream());showImg(bitmap);} catch (IOException e) {e.printStackTrace();}}}).start();}private void showImg(final Bitmap bitmap){runOnUiThread(new Runnable() {@Overridepublic void run() {imageView.setImageBitmap(bitmap);}});}
}
联想
第一步和第二应该可以合并在子线程中;
将bitmap声明为全局变量,第三步应该可以精简:
try {url = new URL("https://img-home.csdnimg.cn/images/20201124032511.png");requestImg(url);} catch (Exception e) {e.printStackTrace();}imageView.setImageBitmap(bitmap);
这里我没有测试过,只是一些想法;
权限
在 Mainfest.xml文件中加入网络权限申请;
<uses-permission android:name="android.permission.INTERNET"/>
安卓 9 加强了保密性,导致无法进行非加密的 http 网络请求
解决方法:
在 AndroidManifest.xml 的 application 标签中新加:
android:usesCleartextTraffic=“true”
重新运行即可;
熟悉Android---使用imageView加载网络图片相关推荐
- Universal-Image-Loader,android-Volley,Picasso、Fresco和Glide五大Android开源组件加载网络图片的优缺点比较
在android中的加载网络图片是一件十分令人头疼的事情,在网上有着许多关于加载网络图片的开源库,可以让我们十分方便的加载网络图片.在这里我主要介绍一下我自己在使用Volley, Picasso, U ...
- Android开发 - ImageView加载Base64编码的图片
在我们开发应用的过程中,并不是所有情况下都请求图片的URL或者加载本地图片,有时我们需要加载Base64编码的图片.这种情况出现在服务端需要动态生成的图片,比如: 二维码 图形验证码 - 这些应用场景 ...
- android imageview 设置网络图片,ImageView加载网络图片
android网络加载图片框架Android-Universal-Image-Loader功能非常强大,其开源地址https://github.com/nostra13/Android-Univers ...
- android listview动态加载网络图片不显示,Android Listview异步动态加载网络图片
Android Listview异步动态加载网络图片 详见: http://blog.sina.com.cn/s/blog_62186b460100zsvb.html 标签: Android SDK ...
- Android 6种加载网络图片的第三方详解
一. Glide加载 Glide.with(this).load("http://p0.qhimg.com/t015f3654b694ad2f8a.jpg").into(image ...
- ImageView加载网络图片
使用第三方的库Glide加载网络图片 首先去下载一个glide的包 下载地址:https://github.com/bumptech/glide/releases/download/v4.7.0/gl ...
- android中的ImageView,ImageView加载网络图片
android中的ImageView,ImageView加载网路图片 在布局文件中加入标签
- Android 自定义ImageView加载图片
自定义imageview功能: 可以实现设置图片显示的时候,依据本身的比例进行图片的缩放 加载图片效果: 使用ImageLoader来加载 图片: 首先将ImageLoader的jar包关联到项目中 ...
- Android 使用Picasso加载网络图片等比例缩放
在做android图片加载的时候,由于手机屏幕受限,很多大图加载过来的时候,我们要求等比例缩放,比如按照固定的宽度,等比例缩放高度,使得图片的尺寸比例得到相应的缩放,但图片没有变形.显然按照andro ...
最新文章
- 10 个让你笑的合不拢嘴的 GitHub 项目!
- 根据服务器ip地址查看虚拟目录,IIS虚拟目录实现与文件服务器网络驱动器映射共享...
- java多线程之线程的同步与锁定(转)
- 微软认真聆听了开源 .NET 开发社区的炮轰: 通过CLI 支持 Hot Reload 功能
- python关键字详解_Python 中的关键字with详解
- 《Adobe Photoshop大师班:经典作品与完美技巧赏析》即将上市
- 【MyBatis笔记】09-一对多关系建表
- 子进程和父进程的结论_Python的多进程不是随便用滴!
- 银行IT部门科技管理流程管控工作发展之路
- STM32F205 PWM配置
- 视频格式转换器之视频格式在线转换详细教程
- 计算机网络技术练习,计算机网络技术基础各章节综合练习题及答案
- python中求根公式_python求根公式
- HTML5制作诗歌锦集,短小优美的自创现代诗歌(精选5首)
- java开发操作系统:启动任意多控制台窗口
- IDEA全局搜索快捷键方法
- PS 不能使用移动工具 因为目标图层被隐藏怎么办
- Latex文本两端对齐
- 如何批量调整图片亮度和对比度?
- 开放平台API接口加密,签名策略