Mam kilka płytek, które składają się na pojedynczy obraz, które są renderowane na żądanie (przez to, jaka część całkowitego obrazu jest widoczna na ekranie). Obraz złożony jest znacznie większy niż ekran. Każda płytka jest umieszczona ciasno obok sąsiadów, aby stworzyć iluzję pojedynczego obrazu (pojedynczy obraz, jeśli nie jest wyłożony płytkami, byłby zbyt duży i zawierałby błędy OOM).Android - skalowanie widoku (układu) w czasie wykonywania
Są to ImageViews wewnątrz FrameLayout, ustawione za pomocą top/leftMargin.
targetting API 2.2/SDK 8
próbuję przeskalować całkowity obraz w odpowiedzi na zdarzenia użytkownika (naciśnięć klawiszy, szczypanie, etc).
Najwyraźniej funkcja setScale jest niedostępna do wersji interfejsu API 11. Próbowałem użyć canvas.scale w pliku onDraw obiektu FrameLayout z parametrem setWillNotDraw (false), a onDraw jest wywoływany, ale nie jest stosowane skalowanie (zakładam, ponieważ sam układ nie ma żadnych informacji graficznych? Założę się, że to sprawi, że to również dzieci, ale chyba nie, chyba że robię coś złego również tutaj).
Sądzę, że mógłbym iterować po każdym kafelku i skalować go niezależnie, ale musiałbym również zmieniać położenie każdego z nich za każdym razem.
Muszę myśleć, że istnieje sposób skalowania widoku rodzica (ViewGroup?), Aby wszystkie jego dzieci również były skalowane (jak każdy inny język odpowiedzialny za zarządzanie GUI). czego mi brakuje?
Dzięki
Wow, to całkiem otwarcia oczu, dziękuję! Ale wydaje mi się, że ma to sens (łatwiej jest dojść do konkluzji znając odpowiedź;)). Nie chcemy zapisywać i przywracać płótna do jego poprzedniego stanu, ponieważ taka jest zmiana, którą chcemy, Wykonaną bezpośrednio na tej samej warstwie. Jeszcze raz, okrzyki :) – aMiGo
Odnośnie canvas.save() i canvas.restore(), robiłem to samo. i rzeczywiście bez nich działa. więc czy możesz mi powiedzieć, dlaczego na stronie [Android development page] (http://developer.android.com/training/gestures/scale.html) umieszczają te wiersze? – AsafK
@AsafK Nie mam pojęcia. – momo