Проблема 1: да, вам нужно изменить видимость тех представлений, которые вы не хотите, чтобы они были преобразованы в изображение (самый простой способ).
Проблема 2: для добавления водяного знака вы можете просто нарисовать его на холсте (вы можете использовать canvas.drawBitmap) вместо того, чтобы поместить его в макет.
В общем математическом элементе:
next === current + 1 (mod count)
prev === current - 1 (mod count)
где === является 'конгруэнтным' оператором. Преобразовывая это в оператор модуля, это было бы:
count = upper - lower
next = ((current + 1 - (lower%count) + count) % count) + lower
prev = ((current - 1 - (lower%count) + count) % count) + lower
Было бы ваше дело узнавать верхние и нижние границы для каждого объекта. Вы могли сохранить это в двоичном дереве для быстрого извлечения. Возможно, я не понимаю Вашего вопроса.
(обратите внимание, что это принимает ниже <верхний, и ниже> 0),
+=======+ +=======+ +=======+
| Obj | ---> | Obj | ---> | Obj |
buffer | 1 | <--- | 2 | <--- | 3 |
+=======+ +=======+ +=======+
index 0 1 2 /* our first run */
index 3 4 5 /* second run */
and so on ...
Так, Вы видите 3 списка элементов, 1-й объект индексируется 0, 3, 6,
и т.д. Точно так же второй объект индексируется 1, 4 (1 + 3), 7 (4 + 3), ...
Общее правило: next <- (next + 1) % size
, где size = upper - lower + 1
Используя эту формулу мы добираемся:
curr | next
-------+-----------------
0 | (0 + 1) % 3 = 1
-------+-----------------
1 | (1 + 1) % 3 = 2
-------+-----------------
2 | (2 + 1) % 3 = 0
-------+-----------------
Надежда, которая помогает
Я написал эту статью несколько лет назад о круговом итераторе STL.
http://noveltheory.com/Iterators/Iterator_N0.htm
Это будет работать над любым набором STL (векторы и boost:array, и т.д.)
Повышение имеет Круговой контейнер, что я полагаю, что можно установить границы на также.
На самом деле Пример на той странице выглядит очень похожим на то, что Вы говорите здесь.
Но так или иначе, Вы могли выполнить математическую часть его легко использование модуля:
Поэтому скажите, что Ваше макс. равнялось 3:
int MAX = 3;
someArray[ 0 % MAX ]; // This would return element 0
someArray[ 1 % MAX ]; // This would return element 1
someArray[ 3 % MAX ]; // This would return element 0
someArray[ 4 % MAX ]; // This would return element 1