Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何避免列表视图中的图像闪烁

如何避免列表视图中的图像闪烁
EN

Stack Overflow用户
提问于 2016-03-15 06:10:45
回答 5查看 3.6K关注 0票数 4

我有一张能显示很多图片的图片。我正在使用通用图像加载器将这些图像从文件加载到图像视图。

这张图片有不同的尺寸,我希望它们都有相同的宽度,但是对于每个图像的纵横比,有不同的高度。

为了实现这一点,我尝试将以下设置设置为我的图像视图

代码语言:javascript
运行
AI代码解释
复制
<ImageView
   android:layout_width = "400dp"
   android:layout_height="wrap_content"
   android:scaleType="centerCrop"
   android:adjustViewBounds="true"/>

这种方法的问题是,当一个人滚动列表视图时,会有很多闪烁,因为图像视图的高度是事先不知道的,并且必须首先使用我的宽度来计算每幅图像相对于其高宽比的图像高度。

如何预先计算每个图像的高度,而不是让图像视图处理它呢?

如果我有一个400 x 700的图像,并且我希望图像视图宽300 be,我如何用我的图像维数来计算图像视图的高度,并保持图像的纵横比?这可以帮助避免闪烁一个滚动列表视图。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2016-03-15 23:38:04

经过几个小时的研究,我知道了在保持图像高宽比的同时,我可以用来计算新的图像视图高度的方法。

代码语言:javascript
运行
AI代码解释
复制
    BitmapFactory.Options options = new BitmapFactory.Options();
    options.inJustDecodeBounds = true;

//Returns null, sizes are in the options variable
BitmapFactory.decodeFile("/sdcard/image.png", options);
int width = options.outWidth;
int height = options.outHeight;

//calculating image aspect ratio
float ratio =(float) height/(float) width;

//calculating my image height since i want it to be 360px wide
int newHeight = Math.round(ratio*360);

//setting the new dimentions
 imageview.getLayoutParams().width = 360;
 imageview.getLayoutParams().height = newHeight;

 //i'm using universal image loader to display image
 imaheview.post(new Runnable(){
  ImageLoader.getInstance().displayImage(imageuri,imageview,displayoptions);
 });
票数 1
EN

Stack Overflow用户

发布于 2016-03-15 06:13:41

此闪烁的原因是,在列表视图中,列表项被重用。当重复使用时,列表项中的图像视图保留第一次显示的旧图像引用。稍后,一旦下载新的图像,它将开始显示。这会导致闪烁行为。为了避免这个闪烁的问题,总是清除旧的图像引用从图像视图时,它被重用。

在您的示例中,将holder.image.setImageBitmap(null);添加到holder = (ViewHolder) convertView.getTag();之后

因此,您的getView()方法如下所示:

代码语言:javascript
运行
AI代码解释
复制
@Override
public View getView(final int position, View convertView, ViewGroup parent) {

    ...

    if (convertView == null) {
        LayoutInflater inflater = getLayoutInflater();
        convertView = inflater.inflate(viewResourceId, null);

        holder = new ViewHolder(convertView);
        convertView.setTag(holder);
    } else {
        holder = (ViewHolder) convertView.getTag();
        holder.image.setImageBitmap(null)
    }

    ...

    return convertView;
}
票数 2
EN

Stack Overflow用户

发布于 2016-03-15 07:11:02

你可以这样做:

代码语言:javascript
运行
AI代码解释
复制
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;

//Returns null, sizes are in the options variable
BitmapFactory.decodeFile("/sdcard/image.png", options);
int width = options.outWidth;
int height = options.outHeight;
//If you want, the MIME type will also be decoded (if possible)
String type = options.outMimeType;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36013709

复制
相关文章
更改源
System Settings –> Software & Updates –> Ubuntu Software –> Download from –> Other.. –> China –> Select Best Sever
JNingWei
2018/09/28
2K0
更改yum源为国内阿里源
因为我要查看ip,然后通过ssh工具链接。因为在vm中,无法直接粘贴命令等。 结果因为是最简安装,所以连基本的ifconfig都没有。 所以需要执行yum -y install net-tools 结果发现,报错!!!!!! 解决: 步骤: 修改文件 vi /etc/sysconfig/network-scripts/ifcfg-ent33 # 最后那个文件是网卡文件 # 打开把最后的 ONBOOT=NO 改成 YES 重启网络 service network restart yum安装net-to
无道
2019/11/13
8.7K0
Ubuntu 更改软件源
1,备份 /etc/apt/sources.list sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup 2,删除原内容,改为: deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe
Dean0731
2020/05/11
2.6K0
ubuntu apt 软件源的更改
在ubuntu下面有一个源列表,源列表里面都是一些网站信息,每条网址就是一个源,这个地址指向的数据标识着这台服务器上有哪些软件可以用
lin_zone
2018/08/15
1.6K0
更改Python的pip安装源
修改 ~/.pip/pip.conf (没有就创建一个文件夹及文件。文件夹要加“.”,表示是隐藏文件夹)
无道
2019/11/13
1.6K0
更改Python的pip安装源
更改pip源/anaconda源:windows与linux
ke1th
2018/01/02
3.5K0
Endnote 域代码已更改
word中参考文献位置出现“域代码已更改”的批注,并且还没有办法删除,现提供如下两个可能可以的解决方法:
全栈程序员站长
2022/06/26
9010
wordpress更改固定链接后404
wordpress的固定链接对于博客的seo优化是非常重要的。因为有些默认设置并不怎么友好,所以我们可以自定义设置自己的想要的固定链接,比如自定义连接结构为:/%post_id%.html。但是往往我们更改之后会出现404页面,这是网站的伪静态出了问题。 下面是在不同环境下的不同解决方法。
SweetHunter
2020/05/10
2.1K0
WordPress更改固定链接诸项事宜
本文目录 前言 具体思路 更改固定链接 添加网站改版规则 规则选择说明 规则编写 后言 前言 记一次站点更改WordPress固定链接并提交百度站长平台链接改版。近日,由于看着 朴素 的链接不顺眼,
神无月
2018/06/22
1.8K0
yarn镜像源更改和安装注意
查看镜像源 yarn config get registry 设置镜像源 选择淘宝镜像源 yarn config set registry https://registry.npm.taobao.org 遇到的坑 vscode工具终端设置镜像源无效 解决办法:退出工具,在系统终端设置 yarn install无效 镜像源在当前目录下的.yarnrc文件下设置,只需要更改如下: registry "https://registry.npm.taobao.org"
潇洒哥和黑大帅
2019/08/19
5.7K0
debian更改源和卸载无用服务
初次使用Debian系统呢,上来我们一般要先执行这些操作,更新源或者更换源,删除无用的端口占用服务,还我们一个干净的系统,以下自己的一些使用教程,顺便记录下笔记。
无敌小菜鸟
2021/12/10
3.6K1
debian更改源和卸载无用服务
termux更改镜像源_pycharm自带python
方法2,直接替换掉pycharm环境中的默认镜像源,永久有效,而且不用每次都输入镜像源地址,
全栈程序员站长
2022/09/27
2.4K0
termux更改镜像源_pycharm自带python
win10更改pip源方法
在c:\user(或者用户)\电脑的用户名\,目录下创建一个命名为“pip”的文件夹(如:C:\Users\Administrator\pip),在该文件夹下创建一个命名为“pip.ini”的文件,在该文件中写入以下内容:
全栈程序员站长
2022/09/02
4760
pip源很慢,更改成清华的镜像地址
参考-清华大学镜像文档: https://mirrors.tuna.tsinghua.edu.cn/help/pypi/
cg错过
2020/11/16
2.1K0
WordPress更改固定链接404的解决办法
WordPress 网站建设中,固定链接设置是必不可少的,好的固定链接更美观、易用、利于用户分享和搜索引擎收录,需要注意的是,要使设置的固定链接生效的前提是你的网站环境支持伪静态。 常用的参数有 日期和名称型 /%year%/%monthnum%/%day%/%postname%/ 月份和名称型 /%year%/%monthnum%/%postname%/ 数字型 /archives/%post_id% 文章名 /%postname%/ ID+html 型 /%post_id%.html 很多站长在玩
沈唁
2018/05/24
7.5K0
限定源端口访问目标
在渗透测试时,客户需要对我们的测试IP进行加白,但是此次客户要求精确到固定端口或者小范围端口(不能1-65535),根据以前的经验,默认是加白IP和全端口,因为代理建立连接使用的端口是随机的,所以这次算是从头查找资料总结一下各种指定源端口的方式。
用户1709153
2023/05/10
1K0
树莓派3B+ 软件源更改
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/152926.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/12
6710
更改jenkins插件地址为国内镜像源
往下滑,将URL改成https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
找Bug
2022/07/22
8.6K2
更改jenkins插件地址为国内镜像源
Jenkins(2)- 更改插件源为国内源
https://www.cnblogs.com/poloyy/category/1645399.html
小菠萝测试笔记
2020/06/09
1.7K0
Jenkins(2)- 更改插件源为国内源
点击加载更多

相似问题

Next.js无法使用动态图像url

122

使用getStaticProps()在next.js中获取未定义数据

11

使用Next.js动态url停止热重新加载

129

使用不同URL的Next.js动态路由

116

使用Sequelize动态获取数据库URL

121
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文