二次元のスクロール可能な正方形タイルのマトリックスを表示する単純なアプリを構築しようとしています。リングのように 1 行または 1 列をスクロールできる 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);
マージンの代わりにタイルの上部と左側のパラメーターを変更したいので、このアプローチは本当に好きではありませんが、それは私ができる最高のものです。
ドラッグ イベントの方向に応じて、相対的な行または列のドラッグを処理するために、各タイルにリスナーをアタッチしました。いくつかの問題を除いて、すべてが非常にうまく機能しているようです。
- 行を右にスクロールすると、右マージンの最後のタイルが残りのスペースを埋めようとしているかのように徐々に縮小し、最終的には消えます。
- 次に左にスクロールすると、消えたタイルは再び表示されません。
さらに、ユーザーに無限の行/列の錯覚を与える最良の方法は何かを理解する必要があります。おそらくその行/列がスクロールされている場合にのみ、各行/列の両側にあるすべてのタイルを複製する必要があると思います。
コードをいじっていると思うので、このインターフェイスを実現するための最良の方法は何かを理解するためだけに助けを求めています。さらに詳細が必要な場合は、私に尋ねてください。
ありがとうございました!