Android开发网络图片完整显示且不拉伸

2024-05-05 06:32

本文主要是介绍Android开发网络图片完整显示且不拉伸,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

      需求:由上往下加载多张网络图片,满横屏完整显示且不拉伸。

      这里有几个问题要解决的,一个是网络图片,一个是完整显示,一个是图片不能出现拉伸问题。

      解决思路:不拉伸完整显示只有等比例缩放图片,ImageView.ScaleType.CENTER_CROP符合,需求中满横屏很关键,那就只有高度不知道了,有已知求未知即可,sw/sh=iw/ih。奇葩的是瓦项目中服务器不返回图片的真实宽高,这又要多一步操作了,先下载生bitmap对象,从中获取图片的宽高来设置imageview的宽高。多张图片也就是不固定数量,所以得动态创建imageview控件,这不难。                      

      关键代码:

                 循环图片地址

llImagesDetail.removeAllViews(); //防止重复添加for (int i = 0; i < goodsImagesResult.getList().size(); i++) {bitmapTask = new BitmapTask(mContext, goodsImagesResult.getList().get(i).getImg());bitmapTask.execute();}
                生成bitmap的任务

/*** 获取网络图片bitmap任务*/private class BitmapTask extends AsyncTask<String, Integer, Bitmap> {private Context context;private String url;public BitmapTask(Context context, String url) {this.context = context;this.url = url;}@Overrideprotected Bitmap doInBackground(String... params) {Bitmap bitmap = ImageAppUtil.getImageBitmap(context, url);return bitmap;}@Overrideprotected void onPostExecute(Bitmap bitmap) {ImageView imageView = new ImageView(context);ImageAppUtil.setSelfImage(context, imageView, url, bitmap.getWidth(), bitmap.getHeight());llImagesDetail.addView(imageView);}}

              设置动态生成imageview的宽高
/*** 图片完整显示自适应屏幕,宽占满* @param imageView* @param url* @param imageWidth* @param imageHeight*/public static void setSelfImage(Context context, ImageView imageView, String url, int imageWidth, int imageHeight){//做图片适配int screenWidth = (int) Utils.getScreenWidthPx(context);LinearLayout.LayoutParams imageParams = new LinearLayout.LayoutParams(screenWidth, (int) (screenWidth * imageHeight / imageWidth));imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);imageView.setLayoutParams(imageParams);ImageLoaderUtil.load(imageView, url, context);}
           代码基本在这里了,不难。其实最后不用再用图片url去设置imageview的图片了,可以直接用之前生成的bitmap来设置。因瓦的项目此方法在很多地方调用,又赖于新建方法。

这篇关于Android开发网络图片完整显示且不拉伸的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/961004

相关文章

基于Python开发电脑定时关机工具

《基于Python开发电脑定时关机工具》这篇文章主要为大家详细介绍了如何基于Python开发一个电脑定时关机工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 简介2. 运行效果3. 相关源码1. 简介这个程序就像一个“忠实的管家”,帮你按时关掉电脑,而且全程不需要你多做

在MyBatis的XML映射文件中<trim>元素所有场景下的完整使用示例代码

《在MyBatis的XML映射文件中<trim>元素所有场景下的完整使用示例代码》在MyBatis的XML映射文件中,trim元素用于动态添加SQL语句的一部分,处理前缀、后缀及多余的逗号或连接符,示... 在MyBATis的XML映射文件中,<trim>元素用于动态地添加SQL语句的一部分,例如SET或W

C#中图片如何自适应pictureBox大小

《C#中图片如何自适应pictureBox大小》文章描述了如何在C#中实现图片自适应pictureBox大小,并展示修改前后的效果,修改步骤包括两步,作者分享了个人经验,希望对大家有所帮助... 目录C#图片自适应pictureBox大小编程修改步骤总结C#图片自适应pictureBox大小上图中“z轴

Java中的Opencv简介与开发环境部署方法

《Java中的Opencv简介与开发环境部署方法》OpenCV是一个开源的计算机视觉和图像处理库,提供了丰富的图像处理算法和工具,它支持多种图像处理和计算机视觉算法,可以用于物体识别与跟踪、图像分割与... 目录1.Opencv简介Opencv的应用2.Java使用OpenCV进行图像操作opencv安装j

使用Python将长图片分割为若干张小图片

《使用Python将长图片分割为若干张小图片》这篇文章主要为大家详细介绍了如何使用Python将长图片分割为若干张小图片,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. python需求的任务2. Python代码的实现3. 代码修改的位置4. 运行结果1. Python需求

Python实现NLP的完整流程介绍

《Python实现NLP的完整流程介绍》这篇文章主要为大家详细介绍了Python实现NLP的完整流程,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 编程安装和导入必要的库2. 文本数据准备3. 文本预处理3.1 小写化3.2 分词(Tokenizatio

使用IntelliJ IDEA创建简单的Java Web项目完整步骤

《使用IntelliJIDEA创建简单的JavaWeb项目完整步骤》:本文主要介绍如何使用IntelliJIDEA创建一个简单的JavaWeb项目,实现登录、注册和查看用户列表功能,使用Se... 目录前置准备项目功能实现步骤1. 创建项目2. 配置 Tomcat3. 项目文件结构4. 创建数据库和表5.

SSID究竟是什么? WiFi网络名称及工作方式解析

《SSID究竟是什么?WiFi网络名称及工作方式解析》SID可以看作是无线网络的名称,类似于有线网络中的网络名称或者路由器的名称,在无线网络中,设备通过SSID来识别和连接到特定的无线网络... 当提到 Wi-Fi 网络时,就避不开「SSID」这个术语。简单来说,SSID 就是 Wi-Fi 网络的名称。比如

Java实现任务管理器性能网络监控数据的方法详解

《Java实现任务管理器性能网络监控数据的方法详解》在现代操作系统中,任务管理器是一个非常重要的工具,用于监控和管理计算机的运行状态,包括CPU使用率、内存占用等,对于开发者和系统管理员来说,了解这些... 目录引言一、背景知识二、准备工作1. Maven依赖2. Gradle依赖三、代码实现四、代码详解五

基于Qt开发一个简单的OFD阅读器

《基于Qt开发一个简单的OFD阅读器》这篇文章主要为大家详细介绍了如何使用Qt框架开发一个功能强大且性能优异的OFD阅读器,文中的示例代码讲解详细,有需要的小伙伴可以参考一下... 目录摘要引言一、OFD文件格式解析二、文档结构解析三、页面渲染四、用户交互五、性能优化六、示例代码七、未来发展方向八、结论摘要