android - 在 ScrollView 中回收 View

标签 android view scrollview adapter

我有一个应用程序可以显示 channel 列表的电视指南。我的用户界面由许多显示电视节目的不同宽度的自定义 View 组成,所有这些自定义 View 都被添加到一个水平 ScrollView 中,该水平 ScrollView 被添加到一个 ScrollView 中,因此我的 View 可以在左右和顶部的 2 维中滚动-下。一切都很好,直到我添加了很多 View 并且它开始变慢很多。所以我需要一种方法来回收 View ,就像 listiew 在 ScrollView 中所做的那样,也许有一个定制的 ScrollView 可以做到这一点,或者有人知道如何做到这一点,奇怪的是 ScrollView 没有像 gridview 和 listview 这样的适配器支持。

This is how my UI looks

最佳答案

我做了类似的事情,只是我的 View 没有像你的那样连接,但它们的大小都不同。

首先,您需要定义您的整个区域(不仅仅是观看屏幕)是否具有确定的或动态数量的自定义 View 。

如果您有明确数量的 View 和它们的位置,您应该使用 Rect 列表创建它们的位置图(无论 xy 点是否属于 Rect,Rect 都有很好的功能)。然后定义屏幕上可见的最大 View 。为了在没有持续加载的情况下工作,你应该有最大的可见 View +至少一行总对象的边界 View 。毕竟你应该很容易拥有自己的定位系统,你可以在其中加载屏幕边界内的 View +一些开销(这样做的目的是你希望你的用户在至少滚动一定长度的同时平滑过渡),如果你需要在卸载的同时加载一些(读取重用/不要处理对象并在滚动事件中创建它们)并根据您的需要放置它们。

如果您想确定哪些 View 应该可见,您只需浏览列表并询问 Views Rect 是否与要加载的区域 Rect 相交。

希望这张图片能帮到你更多

Example

我知道这听起来有点困惑且难以实现,但您没有问一个简单的问题 :) 希望这对您有所帮助并享受您的工作。

关于android - 在 ScrollView 中回收 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16404432/

相关文章:

android - 是否可以将 onTouchEvent 传递给 Android 中的多个 View ?

android - ImageView in LinearLayout in Scrollview with CardStackView and Picasso 图片不显示

android - 为什么 Embarcadero RAD Studio XE5 找不到我的手机?

android - 汇编与汇编之间的区别调试与汇编发布之间的区别

android - 我怎样才能得到当月的下个月是否有任何API

android - 在 flutter web 中实现 admob 或其他广告

MySQL View 优化

ruby-on-rails - Rails 3.2 - haml 与 erb。哈姆更快吗? (2012 年 2 月)

focus - JavaFX:使用箭头键滚动与焦点遍历

android - 无法在android中居中布局