プログラムが、ある程度まとまったので、「次へ」「戻る」で移動させよう。
viewSwitcherも使おう。と、テストのメソッドを削除して、並びを整理したら、プログラム途中でディレクトリ用のサムネイルが表示しなくなった。…
関係部分を突いてみたものの解らずじまい。
これは1から見直すしかないとMainActivity を見ていったら、テスト部分の整理したメソッド…、
見栄えで並び順を変えたせいでデータが出てないのに参照していたという落ち。
1週間がorz..
めげずに配列の画像パスを使って「次へ進む」「前へ戻る」を組み込む。
まず、1枚表示。
「次へ進む」targetIndex++
「前へ戻る」targetIndex--
と、配列の範囲外処理で問題なし。
では、2枚表示。
「次へ進む」targetIndex+2
「前へ戻る」targetIndex-2
と、配列の範囲外処理で問題なし。
人は欲望で動いている。
画像は、縦長、横長があるよね。
ペアになったら横長が小さくなって見づらいから、横長は1枚表示にしよう。
あ~めんど。(30分後)
進むだけなら問題ない。
戻るが加わると単純には操作できない。
で、考え方の基礎部分。イメージのみ。
2枚を表示する画像に対応する箱が2つ。
AとB。Aがベース、Bがサブとする。
A B
index: 0 1 2 3 (4) (5) 6 7 8 9
A B
index: 0 1 2 3 4 5 (6) (7) 8 9
これは2枚づつの場合。
分かりやすく進むだけを考える。範囲外チェックは省略。
横長を判断条件にする。
例えば、5番が横長だったら。
A (B) Bには、ー1を入れておく。
index: 0 1 2 3 (4) 5 6 7 8 9
A (B) Bには、ー1を入れておく。
index: 0 1 2 3 4 (5) 6 7 8 9
A B
index: 0 1 2 3 4 5 (6) (7) 8 9
横長がペアに入ったら1枚表示とする。
そして、ABの箱を渡す。次の処理は、箱の中を見て表示画像と位置を決める。
次は戻るだけを考える。同じく5番が横長。
A B
index: 0 1 2 3 4 5 (6) (7) 8 9
A (B) Bには、ー1を入れておく。
index: 0 1 2 3 4 (5) 6 7 8 9
A B
index: 0 1 2 (3) (4) 5 6 7 8 9
実際には、indexを管理する変数を使っている。
ベース、Aの箱の中の番号の1つ前を調べて、横長なら、Aに番号を入れ、Bにー1を入れて次へ渡す。
別パターン。
A B
index: 0 1 2 3 4 5 6 (7) (8) 9
A (B) Bには、ー1を入れておく。
index: 0 1 2 3 4 5 (6) 7 8 9
A (B) Bには、ー1を入れておく。
index: 0 1 2 3 4 (5) 6 7 8 9
A B
index: 0 1 2 (3) (4) 5 6 7 8 9
パターンによる違いも考える。
そして、ABの箱の並びは、進むも戻るも同じ順序。
次の処理では画面の左側、右側を箱の並びで決めているから。
左右の画像を入れ替えたい時は、ABに入れる番号を逆にする。
進むで画像を切り替えていて、戻るで番号が減数変化した時の動作も確認する。
状況判断の取りこぼしに注意。