krótko, szybko i na temat – jak zrobić własny widok

Jestem świeżo po przeczytaniu więc jeszcze pamiętam i mam zapisane najważniejsze kroki, oto przepis na własny widok.
1) Bierzesz 1 widok, który chcesz zmodyfikować na własny użytek – dziedziczysz po owym.
2) Robisz obsługę wszystkich możliwych konstruktorów widoku po którym odziedziczyłeś. Raczej ważne – nigdy nie wiesz, z którego dalvik wywali Ci wyjątek!
3) Jeżeli potrzebujesz dodajesz odpowiednie .xml z parametrami dla kolorów, rozmiarów czy innego dziadostwa, którego nie chcesz i nie powinieneś trzymać zaszytego na stałe w kodzie
4) W swojej metodzie inicjującej – inicjujesz wszystko co będzie ci potrzebne do używania w nowej klasie widoku, np. zaczytujesz kolorki z .xml.
5) W onDraw dodajesz swój kod. Wszystko co będzie przed super.onDraw() będzie pod klasą bazową, wszystko co będzie po będzie nad tym co narysowała klasa bazowa. Oczywiście jeżeli wywołasz super.onDraw(…);
6) Definiujesz layout swojego widoku w odpowiednim .xml. Łudząco podobny do głównego layout’u aplikacji.
7) Używasz swojego nowego widoku w kodzie. Np.int id = R.layout.myNewView; blabla.setView(id);

Po odpaleniu i wywalaniu się aplikacji przeglądasz jaki wyjątek poleciał w dalvikvm, poprawiasz, jarasz się swoim nowym widokiem.

Mega droidowych hakierów pozdrawiam. Na razie nie wiem jak inaczej zrobić własny widok. Jak się dowiem to napisze. Na ten czas to musi wystarczyć.

Działa? Poka – Pochwal się! Pytania? – dajesz!

ps. Jak się dowiem jak to dodam obsługę [code]…[/code] żeby ładne różowe kolory były.

android, programowanie, ksiązki

Z czego się uczyć? To dobre pytanie, można czytać developer.android.com, można szukać na google, można zapytać kolegi, lub zobaczyć co jest np na amazon do przeczytania i kupić sobie książkę. Ja przejrzałem to co oferuje apress, na google book można znaleźć sporą część książki, zdecydowanie nie polecam. Jak dla mnie jest pisana zbyt chaotycznie, jakoś źle mi się to czytało. Natomiast ponownie jestem pod wrażeniem wydawnictwa wrox i takiej książki autorstwa Reto Meier. Wszystko jest tłumaczone, przykłady pisze się samodzielnie, a nie ściąga ze strony wydawnictwa. Wcześniej czytałem coś o programowaniu w c# i .net framework 3.5 i również uważam, że książka była dobrze napisania.
Nauka na przyszłość jak będzie potrzeba przeczytania i nauczenia się jakiejś nowej technologi napewno zacznę naukę od sprawdzenia co oferuje wrox

ps
Post niestety nie jest sponsorowany.

Środowisko programistyczne

Jak pisałem uczę się Androida i jednocześnie piszę mały projekcik w C#, mam więc dobrą okazję do porównani dwóch środowisk programistycznych. Projekt w C# pisany jest w msvc2k8, do nauki Androida używam Eclipse 3.4 plus pakiet ADT od Google. Od razu powiem, że nigdy nie przepadałem za Eclipsem, ale postaram się być obiektywny i dać mu szansę.

Edytor to w zasadzie kwestia gustu i dobrania kolorów, co kto lubi i co uznaje za wygodne. Szybkość edytora i działanie inteli-sens jest w obu przypadkach w porządku, na plus Eclipsa wypada dobry system podpowiedzi generowany z dokumentacji znajdującej się w kodzie. Nie korzystam z tej funkcjonalności, ale doceniam ją i co najważniejsze nie przeszkadza w pisaniu. Microsoft w VC2k8 postarał się o edytor dla C# i pisanie kodu dla tego języka to czysta przyjemność. Szybkie podpowiedzi, generowanie stub funkcji dla delegatów czy innego ustrojstwa to piękna sprawa.

Kompilacja/build w obu IDE edytor na bieżąco informuje o problemach ze składnią czy literówkach. Eclipse pozwala na wyłączenie tej opcji w VC nie wiem, nie sprawdzałem bo nie miałem takiej potrzeby. Niestety w Eclipse domyślne ustawienia CTRL+B dla builda nie chce tak do końca dobrze działać z każdego miejsca w edytorze i często trzeba i tak kliknąć opcje build z menu żeby ruszy – ale to pierdółki.

Debug/runtime tutaj niestety często kończy się moja cierpliwość dla Eclipse. Szczegóły: wybieram opcje Project->Run i okazuje się, że jednak pomimo tego, że jakimś cudem udało się zbudować projekt nie wszystko jest poprawnie i trzeba poprawiać. Nie wiem, nie znam się, może to wina ADT – nie interesuje mnie to. Dla mnie i tak jest to Eclipse. Dalej – aplikacja po dłuższej walce i poprawkach pozwala wreszcie na uruchomienie się na emulatorze. Pojawia się komunikat jak z poprzedniego posta – nie wiem o co chodzi, szukam, walczę, pocę się nie miłosiernie, nic nie kumam. Znowu mija czas. Wreszcie po przełączeniu się na odpowiedni widok jest jakaś informacja o tym co poszło nie tak. To chyba nie to chodzi? Środowisko powinno ułatwiać pracę , a nie przyprawiać go o ataku szału. Możemy sobie psioczyć na Microsoft, ale uważam i pewnie długo jeszcze będę tego zdania, że Visual Studio to najlepszy pakiet programistyczny z jakim dane mi było pracować. Tam wszystko działa tak jak powinno, pracuje mi się z tym bardzo intuicyjnie, jeżeli coś nie działa to wszystkie informacje znajduję w jednym okienku.

Cena – jasne, za pakiet z ms trzeba zapłacić jeżeli chce się mieć wypasioną wersje. Choć teraz można korzystać całkiem przyjemnie z VC w wersji express, która też sprawuje się całkiem przyjemnie. Eclipse jest całkowicie za darmo i fajnie. Ale jak przeczytałem gdzieś na dzone (o ile dobrze pamiętam) – na rzeczy i usługi, które otrzymujemy za darmo patrzymy z lekkim podejrzeniem. Tutaj zapożyczę sobie przykład, który brzmi mniej więcej tak: “czy oddalibyście bliską osobę do chirurga, który wykona operacja za przysłowiowego browara czy tego który będzie żądać od was jakieś opłaty za przeprowadzenie operacji” i od siebie: wszystko co dobre kosztuje.

Nie chce wystawiać oceny żadnemu z tych programów, moje negatywne nastawienie do Eclipse, to pewnie wina tego, że nie zdążyłem się jeszcze z nim w pełni zapoznać. Może musi minąć trochę czasu i odkryje wreszcie cały wypas, który kryje się gdzieś tam – ukryty pod milionami opcji.

Przydatne linki:
Eclipse
Visual Express 2008

I co wy na to?

Sorry! The application has stopped unexpectedly

Z racji tego, że uczę się jak programować na piekielny system Androida, w moim życiu pojawiają się nowe problemy. Np. przy uruchomieniu przykładu android robi tylko “Sorry! The application XXX (process com.xxx) has stopped unexpectedly. Please try again”. Jeżeli jesteś ciekawy co jest nie tak, przełącz się (mówię o Eclipse) na perspektywę DDMD i kliknij LogCat. Znajdziesz tam informacje o brakującym ListView, które musi mieć specyficzne ID, brzmi to tak: ‘Your content must have a listview whose id attribute is ‘android.R.id.list’. Jeżeli w pliku ui.xml masz taki odpowiedni wpis lub przynajmniej wydaje ci się że masz, upewnij się że wartość id jest ustawiona na android:id=”@android:id/list”. Otóż ja wczoraj straciłem trochę zdrowia na tym, że miałem android:id=”@+id/list” – co niestety nie jest poprawne. No ale po co o tym pisać w książce czy w przykładach.

windows phone 7

Nie podoba mi się to co Microsoft zrobił z wm7. Próbowałem się przekonać do tej formy programowania (Silverlight czy XNA), ale nie podchodzi mi. Może się mylę, ale uważam że próbują w ten sposób przeforsować swoje rozwiązania (C#, XNA, Silverlight) – na siłę uszczęśliwić programistów, użytkowników, cały świat.
Do tej pory byłem ogromnym zwolennikiem telefonów z wm na pokładzie. Ale od serii 7 chyba przestanę ich lubić. Zaczynam się skłaniać ku Androidowi, przeglądałem jakieś źródełka i pomimo tego, że nie lubię javy nie wygląda to źle.