Dynamiczne i wydajne tworzenie interfejsu. Piotr Michałkiewicz

Podobne dokumenty
Systemy operacyjne na platformach mobilnych

Tworzenie wydajnych interfejsów. Autorzy: Piotr Michałkiewicz, 2 rok AiR Daniel Maksymow, 2 rok Informatyki

Sieciowe Technologie Mobilne. Laboratorium 2

Programowanie obiektowe / języki programowania W. 2 - SWT

WSTĘP DO ANDROIDA. Laboratorium

Programowanie dla Androida. Ubiquitous

dr Artur Bartoszewski dr Artur Bartoszewski - Aplikacje mobilne - Wykład

Ciekawym rozwiązaniem służącym do obsługi zdarzeń dla kilku przycisków w ramach jednej aktywności może być następujący kod:

Aplikacje mobilne. Pliki zasobów, grafiki, menu, podpinanie zdarzeń. dr Tomasz Jach Instytut Informatyki, Uniwersytet Śląski

Agenda. Activity cd Layouty Jednostki Dialogi LogCat Drugie Activity i Intents Serializacja Własne widoki Menu

Systemy operacyjne na platformach mobilnych

MVVM Light Toolkit. Julita Borkowska

Zdarzenia Klasa Application Powiadomienia Toast AlertDialog

Powiadomienia w systemie Android

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ),

Laboratorium 7 Blog: dodawanie i edycja wpisów

Instrukcja laboratoryjna nr.2

1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie?

dr Artur Bartoszewski dr Artur Bartoszewski - Aplikacje mobilne - Wykład

Agenda. Implicit intents Wyświetlanie obrazków Menu Ikona aplikacji Praca z kolekcjami i ListView Własny widok

Wykład 8: klasy cz. 4

Laboratorium 9 (Więcej Aktywności, w Androidzie)

Dziedziczenie Dana jest klasa Punkt w pliku o nazwie Punkt.java:

Aplikacje w środowisku Java

Systemy wirtualnej rzeczywistości. Komponenty i serwisy

Rysowanie. Rysowanie - podstawy

Fragmenty są wspierane od Androida 1.6

Podstawowe elementy GUI cz. 2 i 3 - zadania

Język Java część 2 (przykładowa aplikacja)

WSTĘP DO ANDROIDA. Laboratorium 2 Systemy i aplikacje bez granic

WSTĘP DO ANDROIDA. Laboratorium 1 Systemy i aplikacje bez granic

Programowanie obiektowe

Część XVII C++ Funkcje. Funkcja bezargumentowa Najprostszym przypadkiem funkcji jest jej wersja bezargumentowa. Spójrzmy na przykład.

Aktywności są związane z ekranem i definiują jego wygląd. Dzieje się to poprzez podpięcie do aktywności odpowiedniego widoku.

Warsztaty v2 Layout y i widget y. Tomasz Wachowski Kamil Snopek Jan Romaniak

Podstawy programowania w Qt4

Przychodnia 0. Stwórz projekt aplikacja konsolowa lub WPF (przemyśl wybór, bo zmiana może być czasochłonna). 1. Stwórz abstrakcyjną klasę Osoba.

Niezwykłe tablice Poznane typy danych pozwalają przechowywać pojedyncze liczby. Dzięki tablicom zgromadzimy wiele wartości w jednym miejscu.

C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie C++ - DZIEDZICZENIE.

Aplikacje w środowisku Java

Biuro Podróży 0. Stwórz projekt aplikacja konsolowa lub WPF (przemyśl wybór, bo zmiana może być czasochłonna). 1. Stwórz abstrakcyjną klasę

Język Java część 2 (przykładowa aplikacja)

Informatyka I. Dziedziczenie. Nadpisanie metod. Klasy abstrakcyjne. Wskaźnik this. Metody i pola statyczne. dr inż. Andrzej Czerepicki

Następnie zdefiniujemy utworzony szkic jako blok, wybieramy zatem jak poniżej

Microsoft Visual C++

AndroidManifest.xml. Plik manifestu opisuje podstawowe charakterystyki aplikacji i definiuje jej komponenty.

SpriteKit. Biblioteka do tworzenia gier wbudowana w SDK. Wspiera grafikę 2D w oparciu o sprite y

Instrukcja laboratoryjna cz.3

.NET Klasy, obiekty. ciąg dalszy

Widoki zagnieżdżone, layout. 1. Wprowadzenie Repozytoria danych

- Narzędzie Windows Forms. - Przykładowe aplikacje. Wyższa Metody Szkoła programowania Techniczno Ekonomiczna 1 w Świdnicy

Straszyński Kołodziejczyk, Paweł Straszyński. Wszelkie prawa zastrzeżone. FoamPro. Instrukcja obsługi

Obiektowy PHP. Czym jest obiekt? Definicja klasy. Składowe klasy pola i metody

GLKit. Wykład 10. Programowanie aplikacji mobilnych na urządzenia Apple (IOS i ObjectiveC) #import "Fraction.h" #import <stdio.h>

Technologie i usługi internetowe cz. 2

Informacje ogólne. Karol Trybulec p-programowanie.pl 1. 2 // cialo klasy. class osoba { string imie; string nazwisko; int wiek; int wzrost;

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

Wykład 5 Okna MDI i SDI, dziedziczenie

Biuro Podróży 0. Stwórz projekt aplikacja konsolowa lub WPF (przemyśl wybór, bo zmiana może być czasochłonna). 1. Stwórz abstrakcyjną klasę

Laboratorium Systemów Mobilnych. Wykład 1

BAZY DANYCH MAKRA I PRZYCISKI. Microsoft Access. Adrian Horzyk. Akademia Górniczo-Hutnicza

Sieciowe Technologie Mobilne. Laboratorium 4

Zaawansowane programowanie UI na platformie Android

PHP 5 język obiektowy

Dodanie nowej formy do projektu polega na:

Programowanie urządzeń mobilnych

Wykład 5: Klasy cz. 3

Backend Administratora

Teraz bajty. Informatyka dla szkoły podstawowej. Klasa VI

Klasy Obiekty Dziedziczenie i zaawansowane cechy Objective-C

Baza danych sql. 1. Wprowadzenie. 2. Repozytaria generyczne

Języki programowania imperatywnego

Instrukcja do pracowni specjalistycznej z przedmiotu. Obiektowe programowanie aplikacji

Klasa dziedzicząca posiada wszystkie cechy klasy bazowej (plus swoje własne) dodawanie nowego kodu bez edycji (i ewentualnego wprowadzania

Tworzenie stron internetowych z wykorzystaniem HTM5, JavaScript, CSS3 i jquery. Łukasz Bartczuk

MVVM i XAML w Visual Studio 2015 / Jacek Matulewski. Gliwice, cop Spis treści

C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU

- dodaj obiekt tekstowy: /** Maciej */ Stage { title : "First JavaFX App" scene: Scene { width: 300 height: 300 content: [ ] } }

Zastosowanie CP-grafów do generacji siatek

Tematy lekcji zajęć komputerowych klasa 5b grupa 1 i grupa 2

1. Zarządzanie informacją w programie Access

Compas 2026 Vision Instrukcja obsługi do wersji 1.07

Programowanie gier komputerowych. Tomasz Martyn. Wykład 10. Różności: Cinamatics, Aktorzy kinematyczni, Prefabs, Archetypes

akademia androida Składowanie danych część VI

Przeciążenie operatorów

Java: otwórz okienko. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Jak ustawić cele kampanii?

2. Klasy cz. 2 - Konstruktor kopiujący. Pola tworzone statycznie i dynamicznie - Funkcje zaprzyjaźnione - Składowe statyczne

JAVAScript w dokumentach HTML (1) JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania.

Wymagania edukacyjne z informatyki dla klasy szóstej szkoły podstawowej.

Język programowania Scala / Grzegorz Balcerek. Wyd. 2. Poznań, cop Spis treści

Layouty. Kilka layoutów

Programowanie obiektowe

PROE wykład 2 operacje na wskaźnikach. dr inż. Jacek Naruniec

Dokumentacja do API Javy.

Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków

Java biblioteka Swing

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Wizualne systemy programowania. Wykład 11 Grafika. dr Artur Bartoszewski -Wizualne systemy programowania, sem. III- WYKŁAD

Podręczna pomoc Microsoft Power Point 2007

Transkrypt:

Dynamiczne i wydajne tworzenie interfejsu użytkownika Piotr Michałkiewicz

Główne punkty prezentacji View i ViewGroup w kodzie OnClick() i Tag Space widget i GridLayout Dynamiczne dodawanie widgetów Animations

View i ViewGroup w praktyce

View i ViewGroup w praktyce Tworząc kod odporny na zmiany warto posługiwać się typami bazowymi, wynika to z faktu, że klasy View i ViewGroup posiadają wiele z atrybutów, do których na ogół potrzebujemy dostępu w kodzie.

View i ViewGroup w praktyce

GridLayout i Space widget

GridLayout

GridLayout GridLayout jest zbliżony charakterystyką do LinearLayout. Stanowi siatkę o zadanej liczbie kolumn i wierszy w której można umieszczać widgety zajmujące prostokątne obszary o różnym kształcie i rozmiarze.

GridLayout

Space widget Space widget jest widgetem dedykowanym dla GridLayout i jest używany do wypełniania przestrzeni GridLayout u, które chcemy pozostawić niezagospodarowane.

Space widget <Space android:layout_row="4" android:layout_column="0" android:layout_columnspan="3" android:layout_gravity="fill" />

Dynamiczne dodawanie widgetów

Dynamiczne dodawanie widgetów Tworząc dowolny obiekt typu View lub pochodnego, jako pierwszy argument konstruktora zawsze podajemy obiekt typu Context.

Dynamiczne dodawanie widgetów Context ten możemy przekazać poprzez this (oczywiście tylko w klasie aktywności), jako że Activity jest klasą dziedziczącą po Context. Drugim sposobem (zalecanym) jest pozyskanie Contextu poprzez: getapplicationcontext(), które można wywołać z poziomu klas dziedziczących po klasie Context.

Dynamiczne dodawanie widgetów Tam gdzie to możliwe zaleca się korzystanie z kontekstu aplikacji!

Dynamiczne dodawanie widgetów ViewGroup kontener = (ViewGroup) findviewbyid(r.id.kontener); View przycisk = new Button(getApplicationContext()); kontener.addview(przycisk); Powyższy kod umieści nowy przycisk zgodnie z domyślnym rozmieszczaniem elementów dla danego kontenera.

Dynamiczne dodawanie widgetów Wywołując odpowiednią metodę, możemy ustawić większość atrybutów dostępnych z poziomu XML a. Jednym z wyjątków są marginesy.

Dynamiczne dodawanie widgetów W celu określenia położenia, dynamicznie stworzonego obiektu typu View lub pochodnego, przypisujemy danemu obiektowi parametry, czyli obiekt klasy LayoutParams. View v = new View(context); v.setlayoutparams(layoutparams);

Dynamiczne dodawanie widgetów Istnieje wiele klas dziedziących po klasie LayoutParams, ważniejszą z nich jest klasa ViewGroup.MarginLayoutParams. Klasa ta pozwala na określenie marginesów danego widoku, jednak istotne jest to, że dziedziczy po niej wiele innych klas określających parametry obiektu typu View.

Dynamiczne dodawanie widgetów Są to między innymi: FrameLayout.LayoutParams, GridLayout.LayoutParams, LinearLayout.LayoutParams, RelativeLayout.LayoutParams, TableLayout.LayoutParams, TableRow.LayoutParams

Dynamiczne dodawanie widgetów Pozycjonując obiekt wewnątrz layout u używamy klasy parametrów odpowiadającej temu layoutowi.

Dynamiczne dodawanie widgetów Pozycjonując widok za pomocą RelativeLayout.LayoutParams, do określania względnej pozycji danego widoku, posługujemy się metodami: addrule(int stałaokreślającaatrybut) addrule(int stałaokreślającaatrybut, int widokdoktóregosięodnosimy) Pierwsza z tych metod dotyczy atrybutów które przyjmują wartości true lub false i poprzez tę metodę ustawiamy wartość tego atrybutu na true, np. ALIGN_PARENT_LEFT. Druga metoda służy do określania atrybutów, których wartości stanowią identyfikatory innych elementów layout u, jej drugi argument to ten właśnie identyifkator. Przykład: v.addrule(relativelayout.below, R.id.innyWidok)

Dynamiczne dodawanie widgetów Określając rozmiary widoku lub np. jego marginesów (i wszystkich innych wielkości) posługujemy się jednostką dp, jest to to samo co dip, czyli density independent points.

Dynamiczne dodawanie widgetów

Dynamiczne dodawanie widgetów LayoutInflater to klasa służąca do tworzenia instancji widgetów, zdefiniowanych w plikach XML.

Dynamiczne dodawanie widgetów LayoutInflater to klasa służąca do tworzenia instancji widgetów, zdefiniowanych w plikach XML.

Animations Tomasz Wachowski

Animations Istnieją trzy systemy animacji: View animation Property animation (API level 11) Drawable animation

Animations View animation Służy to animowania obiektów typu view, Służy to animowania obiektów typu view, jest łatwy w użyciu jednak ograniczony w stosunku do property animation

Animations Property animation Pozwala na przekształcanie atrybutów Pozwala na przekształcanie atrybutów dowolnych obiektów, w tym tych, które nie są rysowane na ekranie oraz obiektów customowych.

Animations Drawable animation Służy do konstruowania animacji Służy do konstruowania animacji składających się z klatek reprezentowanych przez obiekty typu Drawable.

View animation Wśród tego typu animacji wyróżniamy cztery typy: AlphaAnimation animcja przezroczystości TranslateAnimation animacja położenia ScaleAnimation animacja rozmiaru RotateAniamtion animacja obrotu

View animation Animacje możemy tworzyć poprzez definowanie ich w plikach XML oraz poprzez tworzenie obiektów w kodzie i ustawianie ich atrybutów.

Dziękuję Piotr Michałkiewicz