我正在尝试构建一个简单的应用程序,该应用程序将显示一个二维、可滚动的方形瓷砖矩阵。想象一个 2D 魔方,您可以在其中选择滚动单行或单列,就好像它是一个环一样。
我RelativeLayout
在主视图中放置了一个,并通过组件的自定义实现将矩阵的所有图块放置在其中ImageView
。我设置了操纵其RelativeLayout.LayoutParams
值的单个图块的确切位置:
RelativeLayout rl = ...;
TileView tile = ...;
RelativeLayout.LayoutParams rlp = new RelativeLayout.LayoutParams(size, size);
rlp.setMargins(left, top, 0, 0);
rl.addView(tile, rlp);
我真的不喜欢这种方法,因为我想更改磁贴的顶部和左侧参数而不是边距,但这是我能做到的最好的。
我为每个图块附加了一个侦听器来处理相关行或列的拖动,具体取决于拖动事件的方向。一切似乎都很好,除了一些问题:
- 当我向右滚动一行时,右边距上的最后一个图块会逐渐缩小,就好像它试图填充剩余空间一样,最终会消失。
- 然后当我向左滚动时,消失的图块将不会重新出现。
此外,我仍然需要弄清楚给用户带来无限行/列错觉的最佳方式是什么。我认为我应该复制每行/列两侧的所有图块,可能仅在滚动该行/列时。
我向您寻求帮助只是为了了解您认为实现此界面的最佳方式,因为我认为我弄乱了代码。如果您需要更多详细信息,请问我。
谢谢!