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

相关文章

基于 Cursor 开发 Spring Boot 项目详细攻略

《基于Cursor开发SpringBoot项目详细攻略》Cursor是集成GPT4、Claude3.5等LLM的VSCode类AI编程工具,支持SpringBoot项目开发全流程,涵盖环境配... 目录cursor是什么?基于 Cursor 开发 Spring Boot 项目完整指南1. 环境准备2. 创建

MyBatis分页查询实战案例完整流程

《MyBatis分页查询实战案例完整流程》MyBatis是一个强大的Java持久层框架,支持自定义SQL和高级映射,本案例以员工工资信息管理为例,详细讲解如何在IDEA中使用MyBatis结合Page... 目录1. MyBATis框架简介2. 分页查询原理与应用场景2.1 分页查询的基本原理2.1.1 分

MyBatis Plus实现时间字段自动填充的完整方案

《MyBatisPlus实现时间字段自动填充的完整方案》在日常开发中,我们经常需要记录数据的创建时间和更新时间,传统的做法是在每次插入或更新操作时手动设置这些时间字段,这种方式不仅繁琐,还容易遗漏,... 目录前言解决目标技术栈实现步骤1. 实体类注解配置2. 创建元数据处理器3. 服务层代码优化填充机制详

Python实现Excel批量样式修改器(附完整代码)

《Python实现Excel批量样式修改器(附完整代码)》这篇文章主要为大家详细介绍了如何使用Python实现一个Excel批量样式修改器,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一... 目录前言功能特性核心功能界面特性系统要求安装说明使用指南基本操作流程高级功能技术实现核心技术栈关键函

Java实现将HTML文件与字符串转换为图片

《Java实现将HTML文件与字符串转换为图片》在Java开发中,我们经常会遇到将HTML内容转换为图片的需求,本文小编就来和大家详细讲讲如何使用FreeSpire.DocforJava库来实现这一功... 目录前言核心实现:html 转图片完整代码场景 1:转换本地 HTML 文件为图片场景 2:转换 H

Java使用jar命令配置服务器端口的完整指南

《Java使用jar命令配置服务器端口的完整指南》本文将详细介绍如何使用java-jar命令启动应用,并重点讲解如何配置服务器端口,同时提供一个实用的Web工具来简化这一过程,希望对大家有所帮助... 目录1. Java Jar文件简介1.1 什么是Jar文件1.2 创建可执行Jar文件2. 使用java

Java实现在Word文档中添加文本水印和图片水印的操作指南

《Java实现在Word文档中添加文本水印和图片水印的操作指南》在当今数字时代,文档的自动化处理与安全防护变得尤为重要,无论是为了保护版权、推广品牌,还是为了在文档中加入特定的标识,为Word文档添加... 目录引言Spire.Doc for Java:高效Word文档处理的利器代码实战:使用Java为Wo

SpringBoot 多环境开发实战(从配置、管理与控制)

《SpringBoot多环境开发实战(从配置、管理与控制)》本文详解SpringBoot多环境配置,涵盖单文件YAML、多文件模式、MavenProfile分组及激活策略,通过优先级控制灵活切换环境... 目录一、多环境开发基础(单文件 YAML 版)(一)配置原理与优势(二)实操示例二、多环境开发多文件版

Spring 中的切面与事务结合使用完整示例

《Spring中的切面与事务结合使用完整示例》本文给大家介绍Spring中的切面与事务结合使用完整示例,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考... 目录 一、前置知识:Spring AOP 与 事务的关系 事务本质上就是一个“切面”二、核心组件三、完

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同