答案 0 :(得分:4)
根据您的要求,它看起来像是带有无限滚动功能的表格式RecyclerView或某些2d游戏引擎(以防此功能值得您带上它)可能是您的最佳解决方案。
RecyclerView
如果只想存储一些对象(不管是否是图形对象-没关系,如果可以将它们打包到单元格中),则可以使用某种RecyclerView适配器及其扩展名进行无限滚动。
这样,您可以使用视图回收机制节省一些内存。使用详细的通知机制(如已移动/删除的项目),即使对象正在移动,您甚至可以添加一些动画。
除了建议的解决方案evrencoskun/TableView外,我建议浏览一下GridLayoutManger
的整体工作方式,这是the first post out of three的{ {1}}及其RecyclerView
的工作原理,因此您可以针对特定情况量身定制更轻巧的解决方案。有一个simple demo app,带有“大网格”选项的“固定双向列表”,可能会让您对要构建的内容有所了解。您将需要扩展它以使用无限列表,但是当您了解内部原理时,它应该会更简单。
2D引擎
如果想法是在图块上具有任意大小的图形,并且该功能是应用程序的核心,那么考虑使用诸如libdx之类的2d引擎可能是一个好主意。他们有许多使用方法的示例,但是当然会花一些存储和时间来学习它:libgdx wike
自己的解决方案
如果这两种方法都不适合您的需求,那么您将必须从头开始找到自己的解决方案。不要忘记对其进行优化,因为Android中的所有无限事物,尤其是与图形绑定的事物,都可能轻易导致内存不足错误。
答案 1 :(得分:2)
我建议这个evrencoskun/TableView。
它可以让您水平和垂直滚动。
<com.evrencoskun.tableview.TableView
android:id="@+id/content_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
答案 2 :(得分:0)
此链接可能会对您有所帮助
https://github.com/jess-anders/two-way-gridview
<?xml version="1.0" encoding="utf-8"?>
<com.jess.ui.TwoWayGridView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:background="#E8E8E8"
android:id="@+id/gridview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
app:cacheColorHint="#E8E8E8"
app:columnWidth="80dp"
app:rowHeight="80dp"
app:numColumns="auto_fit"
app:numRows="auto_fit"
app:verticalSpacing="16dp"
app:horizontalSpacing="16dp"
app:stretchMode="spacingWidthUniform"
app:scrollDirectionPortrait="vertical"
app:scrollDirectionLandscape="horizontal"
app:gravity="center"/>