У меня есть куча плиток, которые составляют одно изображение, которое отображается по запросу (по тому, какая часть общего изображения видна на экране). Составное изображение значительно больше, чем экран. Каждая плитка плотно располагается рядом со своими соседями, создавая иллюзию одного изображения (одно изображение, если оно не черепичное, будет слишком большим и иметь ошибки OOM).Android - масштабирование группы просмотра (макета) во время выполнения
Это ImageViews внутри FrameLayout, расположенные сверху/leftMargin.
ориентируется API 2,2/SDK 8
Я пытаюсь масштабировать общее изображение в ответ на пользовательские события (нажатие кнопок, щепотка, и т.д.).
Очевидно, что setScale недоступен до API 11. Я попытался использовать canvas.scale в onDraw для FrameLayout с помощью setWillNotDraw (false) и вызывается onDraw, но масштабирование не применяется (я предполагаю, что сам макет не имеет никакой графической информации? Я предположил, что это тоже сделает ее дочерью, но я думаю, что если я не сделаю здесь что-то не так).
Я думаю, что я мог бы проходить через каждую плиту и масштабировать ее независимо, но каждый раз нужно будет менять и каждый.
Я должен думать, что есть способ масштабировать родительский вид (ViewGroup?), Чтобы все его дочерние элементы также масштабировались (как и любой другой язык, ответственный за управление графическим интерфейсом). Что мне не хватает?
Благодаря
Ничего себе, это довольно поучительное, спасибо! Но я предполагаю, что это имеет смысл (легче добраться до контлукции, зная ответ;)). Мы не хотим сохранять и восстанавливать холст до его предыдущего состояния, так как это изменение, которое мы хотим, сделанное непосредственно на том же слое. Еще раз, приветствия :) – aMiGo
Что касается canvas.save() и canvas.restore(), я делал то же самое. и действительно без них он работает. так что вы можете сказать мне, почему на странице разработчиков и разработчиков (http://developer.android.com/training/gestures/scale.html) они помещают эти строки? – AsafK
@AsafK Я понятия не имею. – momo