2013-10-29 6 views
10

Podczas rysowania ścieżki napotkałem na problem z Androidem Canvas. Moim przypadkiem jest to, że mam względny układ pracy podobny do widoku mapy (nie używając google api lub czegoś podobnego). Muszę narysować ścieżkę do tego widoku.Canvas systemu Android nie narysowało ścieżki, gdy punkt ścieżki jest poza zasięgiem

canvas.drawPath(polyPath, borderPaint); 

Też muszę narysować inny typ, taki jak koło, wielokąt przy użyciu płótna. Za każdym razem, gdy powiększamy lub pomniejszamy, obliczamy ponownie punkt ścieżki w celu dopasowania do poziomu powiększenia. Podczas korzystania ze starego api jak Android 2.3.3, nie ma problemu. Jednak w przypadku nowszych api takich jak Android 4.x, gdy powiększamy, istnieją punkty, które mają pozycję poza widocznym widokiem (np. -300, -300 na przykład). Po chwili powiększenia widoczny obszar wyświetla tylko niewielką część mojej ścieżki. A potem nagle cała ścieżka znika. Jeśli pomniejszymy, pojawi się ponownie. To tak, jakby przerwać renderowanie obrazów na płótnie (inny obiekt nadal wyświetla się jak ikona) To samo dotyczy okręgu, owalu lub wielokąta.

Więc nie jestem pewien, czy są jakieś zmiany w sposobie rysowania płótna? Czy jest coś, czego mi brakuje na temat rysowania za pomocą płótna?

Odpowiedz

14

Dodaj tę linię w inicjalizacji widoku

setLayerType(View.LAYER_TYPE_SOFTWARE, null); 

także zobaczyć ten przewodnik dla poziomu sprzętowego obsługiwanego API

google API

Img A

Img B

+2

Dziękuję dużo! To jest właśnie przyczyna mojego problemu. Dodałem kilka linii kodu, aby sprawdzić wersję API przed wywołaniem tej metody. A teraz wszystko znów działa dobrze. – mameo

+1

Właśnie powstrzymałeś mnie przed uderzeniem głową w ścianę ... – Guardanis

Powiązane problemy