草庐IT

Android 只下载 horizo​​ntalScrollView 可见的图片

coder 2023-12-06 原文

我有一个 Horizo​​ntalScrollView,其中包含一个 LinearLayout 来容纳我的所有 View 。我向 LinearLayout 添加了大约 20 个包含 ImageView 和 TextView 的 RelativeLayout。如果 ImageView 在屏幕上(当我滚动到 ImageView 时),我只想加载图像。

我尝试关注 this post要在缩略图上使用 getHitRect(),但是,缩略图的 Rect(边界)始终为 0、0-0、0,导致我的方法返回 false。我做错了什么?

thumbnailLayout 是我在 Horizo​​ntalScrollView 中的 LinearLayout
thumbnailScroll 是我的 Horizo​​ntalScrollView

runOnUiThread(new Runnable() {

    @Override
    public void run() {
           Log.e(TAG, "running");
           for (int i = 0; i < thumbnailLayout.getChildCount(); i++) {
                RelativeLayout view = (RelativeLayout) thumbnailLayout.getChildAt(i);
                ImageView thumbnail = (ImageView) view.findViewById(R.id.thumbnail);
                if (thumbnailIsOnScreen(thumbnail)) {
                    Log.e(TAG, items.get(i).getTitle() + " has downloaded");
                    app.setImage(items.get(i).getThumbnailSmall(), thumbnail);
                }
           }


       }
   });

private boolean thumbnailIsOnScreen(ImageView thumbnail) {
        Rect bounds = new Rect();
        thumbnail.getHitRect(bounds);

        Rect scrollBounds = new Rect(thumbnailScroll.getScrollX(), thumbnailScroll.getScrollY(),
                thumbnailScroll.getScrollX() + thumbnailScroll.getWidth(), thumbnailScroll.getScrollY()
                        + thumbnailScroll.getHeight());
        return Rect.intersects(scrollBounds, bounds);
    }

编辑 我很喜欢使用 TreeObserver,发现我检查缩略图是否在屏幕上的方法是错误的。它仍然抓取所有图像,并不断循环(因为我正在使用 onPreDrawListener?)

thumbnailLayout.getViewTreeObserver().addOnPreDrawListener(new OnPreDrawListener() {

            @Override
            public boolean onPreDraw() {
                Log.e(TAG, "running");

                for (int i = 0; i < thumbnailLayout.getChildCount(); i++) {
                    RelativeLayout view = (RelativeLayout) thumbnailLayout.getChildAt(i);
                    ImageView thumbnail = (ImageView) view.findViewById(R.id.thumbnail);
                    if (thumbnailIsOnScreen(thumbnail)) {
                        Log.e(TAG, items.get(i).getTitle() + " has downloaded");
                        app.setImage(items.get(i).getThumbnailSmall(), thumbnail);
                    }
                }
                return true;
            }
        });

最佳答案

您是否考虑过使用 ViewPager? http://developer.android.com/reference/android/support/v4/view/ViewPager.html

如果这不适合您的设计,您需要覆盖 ScrollView -> 函数 onScrollChanged 并在那里检查屏幕中的图像是否检查图像(左?)位置与滚动位置的比较。

关于Android 只下载 horizo​​ntalScrollView 可见的图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16091932/

有关Android 只下载 horizo​​ntalScrollView 可见的图片的更多相关文章

  1. ruby - 如何使用 Ruby aws/s3 Gem 生成安全 URL 以从 s3 下载文件 - 2

    我正在编写一个小脚本来定位aws存储桶中的特定文件,并创建一个临时验证的url以发送给同事。(理想情况下,这将创建类似于在控制台上右键单击存储桶中的文件并复制链接地址的结果)。我研究过回形针,它似乎不符合这个标准,但我可能只是不知道它的全部功能。我尝试了以下方法:defauthenticated_url(file_name,bucket)AWS::S3::S3Object.url_for(file_name,bucket,:secure=>true,:expires=>20*60)end产生这种类型的结果:...-1.amazonaws.com/file_path/file.zip.A

  2. ruby - 即时确定方法的可见性 - 2

    我正在编写一个方法,它将在一个类中定义一个实例方法;类似于attr_accessor:classFoocustom_method(:foo)end我通过将custom_method函数添加到Module模块并使用define_method定义方法来实现它,效果很好。但我无法弄清楚如何考虑类(class)的可见性属性。例如,在下面的类中classFoocustom_method(:foo)privatecustom_method(:bar)end第一个生成的方法(foo)必须是公共(public)的,第二个(bar)必须是私有(private)的。我怎么做?或者,如何找到调用我的cust

  3. ruby - 安装 Ruby 时遇到问题(无法下载资源 "readline--patch") - 2

    当我尝试安装Ruby时遇到此错误。我试过查看this和this但无济于事➜~brewinstallrubyWarning:YouareusingOSX10.12.Wedonotprovidesupportforthispre-releaseversion.Youmayencounterbuildfailuresorotherbreakages.Pleasecreatepull-requestsinsteadoffilingissues.==>Installingdependenciesforruby:readline,libyaml,makedepend==>Installingrub

  4. ruby-on-rails - Ruby on Rails - 为文本区域和图片生成列 - 2

    我是Rails的新手,所以请原谅简单的问题。我正在为一家公司创建一个网站。那家公司想在网站上展示它的客户。我想让客户自己管理这个。我正在为“客户”生成一个表格,我想要的三列是:公司名称、公司描述和Logo。对于名称,我使用的是name:string但不确定如何在脚本/生成脚手架终端命令中最好地创建描述列(因为我打算将其设置为文本区域)和图片。我怀疑描述(我想成为一个文本区域)应该仍然是描述:字符串,然后以实际形式进行调整。不确定如何处理图片字段。那么……说来话长:我在脚手架命令中输入什么来生成描述和图片列? 最佳答案 对于“文本”数

  5. Unity 热更新技术 | (三) Lua语言基本介绍及下载安装 - 2

    ?博客主页:https://xiaoy.blog.csdn.net?本文由呆呆敲代码的小Y原创,首发于CSDN??学习专栏推荐:Unity系统学习专栏?游戏制作专栏推荐:游戏制作?Unity实战100例专栏推荐:Unity实战100例教程?欢迎点赞?收藏⭐留言?如有错误敬请指正!?未来很长,值得我们全力奔赴更美好的生活✨------------------❤️分割线❤️-------------------------

  6. 安卓apk修改(Android反编译apk) - 2

    最近因为项目需要,需要将Android手机系统自带的某个系统软件反编译并更改里面某个资源,并重新打包,签名生成新的自定义的apk,下面我来介绍一下我的实现过程。APK修改,分为以下几步:反编译解包,修改,重打包,修改签名等步骤。安卓apk修改准备工作1.系统配置好JavaJDK环境变量2.需要root权限的手机(针对系统自带apk,其他软件免root)3.Auto-Sign签名工具4.apktool工具安卓apk修改开始反编译本文拿Android系统里面的Settings.apk做demo,具体如何将apk获取出来在此就不过多介绍了,直接进入主题:按键win+R输入cmd,打开命令窗口,并将路

  7. ruby - 下载位置 Selenium-webdriver Cucumber Chrome - 2

    我将Cucumber与Ruby结合使用。通过Selenium-Webdriver在Chrome中运行测试时,我想将下载位置更改为测试文件夹而不是用户下载文件夹。我当前的chrome驱动程序是这样设置的:Capybara.default_driver=:seleniumCapybara.register_driver:seleniumdo|app|Capybara::Selenium::Driver.new(app,:browser=>:chrome,desired_capabilities:{'chromeOptions'=>{'args'=>%w{window-size=1920,1

  8. ruby-on-rails - HTTParty 的内存问题和下载大文件 - 2

    这会导致Ruby出现内存问题吗?我知道如果大小超过10KB,Open-URI会写入TempFile。但是HTTParty会在写入TempFile之前尝试将整个PDF保存到内存吗?src=Tempfile.new("file.pdf")src.binmodesrc.writeHTTParty.get("large_file.pdf").parsed_response 最佳答案 您可以使用Net::HTTP。参见thedocumentation(特别是标题为“流媒体响应机构”的部分)。这是文档中的示例:uri=URI('http://e

  9. ruby - 强制浏览器下载文件而不是打开文件 - 2

    我要下载http://foobar.com/song.mp3作为song.mp3,而不是让Chrome在其native中打开它浏览器中的播放器。我怎样才能做到这一点? 最佳答案 您只需要确保发送这些header:Content-Disposition:attachment;filename=song.mp3;Content-Type:application/octet-streamContent-Transfer-Encoding:binarysend_file方法为您完成:get'/:file'do|file|file=File.

  10. ruby - 检查网络文件是否存在,而不下载它? - 2

    是否可以在不实际下载文件的情况下检查文件是否存在?我有这么大的(~40mb)文件,例如:http://mirrors.sohu.com/mysql/MySQL-6.0/MySQL-6.0.11-0.glibc23.src.rpm这与ruby​​不严格相关,但如果发件人可以设置内容长度就好了。RestClient.get"http://mirrors.sohu.com/mysql/MySQL-6.0/MySQL-6.0.11-0.glibc23.src.rpm",headers:{"Content-Length"=>100} 最佳答案

随机推荐