Kategorie
Bez kategorii

MaxPaint – mazanie palcem dla Maksymiliana

Od jakiegoś (dość długiego) czasu chodził za mną pomysł na prościutką aplikacyjkę, która pozwoliła by Maksowi (Maks ma 7 lat – tu jest o Nim więcej) rysować palcem po tablecie. Skoro, jak wcześniej pisałem, jestem entuzjastą HTML-a 5 to i dość szybko przyrządziłem kod javascriptowy, który pozwala na mazanie palcem (także myszką) po elemencie Canvas – kod jest dostępny tutaj. Jest to aplikacyjka HTML-owa z obsługą dotyku i wyłączoną obsługą myszki – zatem będzie działać tylko na tabletach i smartfonach, ale można ją bez problemu zmienić tak, aby funkcjonowała na PeCecie. Otworzyłem ten link na domowym tablecie i… Porażka.

Mazanie palcem działa. Tylko szybkość działania jest, oględnie pisząc, fatalna. Nie wiem jak by działało na jakimś „wypasionym” urządzeniu, ale na tanim androidowym tablecie 7″ zachowuje się „wołowato”. Sprawdziłem jak funkcjonuje Autodesk-owy SketchBook (na tym samym tablecie) i… Nie ma porównania. HTML 5 sucks! Przynajmniej w takim zastosowaniu. Trudno – trzeba będzie wrócić i przeprosić się z Javą.

Jednak przypomniałem sobie, że już kilka miesięcy temu ściągnąłem na Androida interpreter Basic-a – RFO Basic. Ten program pozwala pisać i uruchamiać aplikacje wprost na urządzeniu androidowym – ale to nie wszystkie jego możliwości. Autor udostępnia projekt w Eclips-ie dla swojego interpretera, a także instruuje jak na bazie napisanego przez programistę kodu w Basic-u przygotować pełnoprawnego APK-a. Jest także PeCetowa aplikacja RFO-BASIC! Android’s AppBuilder, która „sama” wykrywa Android SDK, pobiera projekt RFO Basic-a, analizuje kod źródłowy apk-a (w Basic-u) i kompiluje pełnoprawny, androidowy program.

Przypomniałem sobie swoje dokonania w Basic-u… Dawno to było, ale ten język jest na tyle prosty, że wystarczyły dwa wieczory aby przygotować aplikację MaxPaint. Muszę przyznać, że nie udało mi się za pierwszym razem osiągnąć zadowalającej szybkości działania. Pierwsza apk-a działała znacząco szybciej niż HTML 5, jednak do SketchBook-a trochę brakowało. Nie załamałem się jednak – przeanalizowałem sposób wyświetlania grafiki w systemie Android (Display List i okolice) i usprawniłem kod. Na początku przyjąłem proste, w efekcie błędne, założenie że aplikacja będzie działała dodając kolejne rysowane elementy (punkty i odcinki) do systemowej listy wyświetlania (Display List). O ile na początku tworzenia „rysunku” program pracował płynnie, to po chwili wyraźnie spowalniał. Ponadto segmenty linii stawały się coraz dłuższe i tym samym rysunek stawał się „kanciasty”.

Nie załamałem sie i zmieniłem front. Wszystkie operacje rysowania wykonuję na wirtualnej bitmapie, która jako jedyna znajduje się na liście wyświetlania (na może jedyna poza stałymi elementami aplikacji tj. paletą kolorów). Bitmapa ma wymiary ekranu i każdy dotyk powoduje stworzenie punktu lub linii. Odświeżenie ekranu jest błyskawiczne i przebiega bez żadnych „mrugnięć”. A szybkość? Praktycznie odtworzyłem szybkość pracy aplikacji renomowanego Autodesku-u. Uznaję że osiągnąłem cel, a przynajmniej pierwszy kamień milowy – teraz będę pracował nad nowymi funkcjami MaxPaint-a.

Aplikacja dla Androida 4.0 (lub nowszego) jest do pobrania „za free” – tutaj.

A tak z MaxPainta korzysta Maks:

mp3

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *