[ Pobierz całość w formacie PDF ]
.Kiedy to zrobimy, każdy element tej listybędzie wyświetlany za pomocą tej animacji.Możemy dodać kilka parametrów, które urozmaicą podstawową animację, na przykład ani-mowanie listy od góry do dołu lub odwrotnie.Parametry te są definiowane w klasie pośredniej,zachowującej się jak mediator pomiędzy konkretnym plikiem XML animacji a widokiem listy.Istnieje możliwość zdefiniowania zarówno animacji, jak i mediatora w pliku XML umieszczo-nym w podkatalogu /res/anim.Gdy już utworzymy taki pośredniczący plik XML, możemy gowykorzystać w postaci danych wejściowych dla widoku ListView w jego własnym pliku definicjiXML.Gdy ta podstawowa konfiguracja będzie już działać, będziemy zmieniać animacje, żebyprzekonać się, w jaki sposób wpływają one na wyświetlanie elementów widoku ListView.Zanim rozpoczniemy ćwiczenie, przyjrzyjmy się, jak widok ListView będzie wyglądał pozakończeniu animacji (rysunek 16.4).Utworzenie aktywności oraz widoku ListViewRozpoczniemy od utworzenia układu graficznego XML dla widoku ListView przedstawionegona rysunku 16.4, dzięki czemu możliwe będzie wczytanie tego układu graficznego w prostej ak-tywności.Na listingu 16.6 został umieszczony taki nieskomplikowany układ graficzny z zaim-plementowanym widokiem ListView.Taki plik należy umieścić w podkatalogu /res/layout.Zakładając, że nazwa pliku brzmi list_layout.xml, kompletna ścieżka do niego będzie wyglądałanastępująco: /res/layout/list_layout.xml.Pole ksi kKup ksi k526 Android 3.Tworzenie aplikacjiRysunek 16.4.Animowana lista ListViewListing 16.6.Plik XML układu graficznego definiujący widok ListViewListing 16.6 przedstawia prosty menedżer LinearLayout z umieszczonym wewnątrz niegoprostym widokiem ListView.Powinniśmy jednak skorzystać z okazji i wyjaśnić pewną rzeczdotyczącą definicji widoku ListView, która jest dość marginalnie powiązana z treścią rozdziału.Jeżeli Czytelnik będzie pracował na aplikacji Notepad lub innych przykładowych progra-mach, zauważy zapewne, że identyfikator widoku ListView jest przeważnie określany jako@android:id/list.Zgodnie z informacjami z rozdziału 3.odniesienie @android:id/listwskazuje na identyfikator predefiniowany w przestrzeni nazw android.Pytanie brzmi: kie-dy należy stosować odniesienie android:id, a kiedy nasz własny identyfikator, na przykład@+id/list_view_id?Identyfikatora @android:id/list używamy jedynie w przypadku, gdy aktywnością jest ListActivity.W przypadku tej aktywności zakłada się, że widok ListView, określony przezten predefiniowany identyfikator, jest dostępny do wczytania.W tym wypadku używamy raczejPole ksi kKup ksi kRozdział 16 Analiza animacji dwuwymiarowej 527aktywności ogólnego przeznaczenia, a nie ListActivity, i musimy własnoręcznie zapełnićw jawny sposób widok ListView.W związku z tym nie ma żadnych ograniczeń co do rodzajuidentyfikatora, który ma reprezentować tę listę.Jednak można także wykorzystać odniesienie@android:id/list, ponieważ nie stwarza to żadnego konfliktu z powodu braku aktywnościListActivity.To taka mała dygresja, warto jednak o niej pamiętać podczas tworzenia własnych widokówListView poza aktywnością ListActivity.Gdy już posiadamy układ graficzny wymagany dlaaktywności, możemy napisać kod odpowiedzialny za wczytanie tego pliku układu graficznego,dzięki czemu zostanie wygenerowany interfejs użytkownika (listing 16.7).Listing 16.7.Kod aktywności odpowiedzialnej za animację układu graficznegopublic class LayoutAnimationActivity extends Activity{@Overridepublic void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.list_layout);setupListView();}private void setupListView(){String[] listItems = new String[] {" Element 1", " Element 2", " Element 3"," Element 4", " Element 5", " Element 6",};ArrayAdapter listItemAdapter =new ArrayAdapter(this,android.R.layout.simple_list_item_1,listItems);ListView lv = (ListView)this.findViewById(R.id.list_view_id);lv.setAdapter(listItemAdapter);}}Niektóre fragmenty kodu widocznego na listingu 16.7 są oczywiste, ale inne nie.Pierwsza częśćkodu w zwykły sposób wczytuje widok na podstawie wygenerowanego identyfikatora układugraficznego R.layout.list_layout
[ Pobierz całość w formacie PDF ]