Entreprenöriell programmering. Android översikt

Relevanta dokument
Android översikt. TDDD80 Mobila och sociala applikationer

Android översikt. TDDD80 Mobila och sociala applikationer

Entreprenöriell programmering TDP028

Android fortsättning. TDDD80 Mobila och sociala applikationer

Föreläsning 17 UTBLICK: FORTSÄTTNINGSKURSER I DATAVETENSKAP + ANDROID

Agil användbarhetsutveckling för handhållna enheter. Per Lind

TDDD80 Mobila och sociala applikationer. Kursintroduktion

Android - En översikt samt titt på utvecklingsmiljö. Kalle Prorok 12 nov 2013

TDDD80 Mobila och sociala applika1oner. Kursintroduk1on

Design och konstruktion av grafiska gränssnitt

Föreläsning 3: Händelsestyrda program och användargränssnitt

Observer Pattern och MVC. Objekt-orienterad programmering och design (DIT953) Niklas Broberg, 2018

Windows Forms Winstrand Development

Högskolan i Gävle. Introduktion till att skapa appar för Android VT Eat App! Jacob Gavin

UML. Klassdiagr. Abstraktion. Relationer. Överskugg. Överlagr. Aktivitetsdiagram Typomv. Typomv. Klassdiagr. Abstraktion. Relationer.

PROGRAMMERINGSTEKNIK TIN212

Exemple på Tentauppgifter Webbprogrammering

Högskolan Dalarna sid 1 av 7 DI-institutionen Hans-Edy Mårtensson Sten Sundin

Kommunikation och Användargränssnitt - Androidutveckling

UML. Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

TDDD80 Mobila och sociala applikationer. Kursintroduktion

INSTALLATIONSGUIDE TILL ANDROID UTVECKLINGSMILJÖ

Properties. Användbara metoder som kan anropas i propertychanged:

Programutvecklingsprojekt Projektgrupp Elvin. Detailed Design Document

Laboration 3 GUI-programmering

Fortsättningskurs i programmering F 5. GUI händelsehantering - undantagshantering Hugo Quisbert AWT. Paket för hantering av grafik

Objektorienterad Programkonstruktion. Föreläsning 11 6 dec 2016

MVC med Javascript och Ajax. Filip Ekberg

Tentamen. 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl

DAT043 - Föreläsning 7

Swedbank Mobile Loadtesting. LoadRunner Mobile App protocol

Grafiska användargränssnitt i Java

DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin

Konstruktion av klasser med klasser

Applikationsutveckling för Android

Lösningsförslag till tentamen i EDAF25 Objektorienterad modellering och design Helsingborg

Design och konstruktion av grafiska gränssnitt

Instuderingsuppgifter läsvecka 2

Grafiska användargränssnitt i Java

ITK:P1 Föreläsning 4. Grafiska gränssnitt i Java. AWT-komponenter

Arv. Fundamental objekt-orienterad teknik. arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier

Tentamen EDA698 Realtidssystem (Helsingborg)

Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag maj - 19 Tentamen i Objektorientering och Java Skrivtid 5 h

TENTAMEN I PROGRAMMERING. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng

Tentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34

SI-pass 4. Johan Brook och Jesper Persson. 25 september Diskutera och svara på om påståendena nedan är äkta sanningar eller listiga lögner.

Riktiga Vykort Partner App Teknisk beskrivning

TDDC76 - Programmering och Datastrukturer

Objektorienterad programmering med Java Swing: Händelser, lyssnare och applets

Observer Pattern och MVC. Objekt-orienterad programmering och design Alex Gerdes, 2016

725G61 - Laboration 8 Ett enkelt GUI. Sahand Sadjadee och Johan Falkenjack

UML. Översikt UML. Relationer mellan klasser. A är ett aggregerat av B:n. Kontor aggregat av Enheter. 12 olika diagramtyper, bl.a.

Objektorienterad Programmering DAT043. Föreläsning 5 29/1-18 Moa Johansson (delvis baserat på Fredrik Lindblads material)

Det här dokumentet är till för att ge en översikt över ASP.NET MVC samt hur WCF Services används från.net applikationer.

Klasshierarkier - repetition

TENTAMEN. Kurs: Applikationsutveckling i Java 5DV135. Ansvarig lärare: Johan Eliasson. HT12 Datum: Tid: kl

Välkommen! SA S PSA S Im I puls s Mobilite t t e 8 1

TENTAMEN: Objektorienterad programmering. Läs detta! Skriv din tentamenskod på varje blad (så att vi inte slarvar bort dem).

Observer Pattern och MVC. Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2017

Snake App Rapport - Snake App Rapport Utskriven/PDF Export: Copyright Version 1.2 Sidan 1 av 9.

Objektorientering - Arv och polymorfi. Eric Elfving Institutionen för datavetenskap

DD2385 Programutvecklingsteknik Några bilder till föreläsning 1 24/ Kursöversikt Javarepetition/Javaintroduktion

Föreläsnings 11 - GUI, Händelsestyrda program, MVC

Objekt-orienterad programmering. Klassbegreppet och C++ UML. UMLs fördelar

Java: Utvecklingsverktyg, datatyper, kontrollstrukturer

Android La sa va rden fra n sensorer

OOP Objekt-orienterad programmering

The Last Adventure. Innehåll. Objektorientering. Språket Java. Java - Paket. Java - synlighet. Den sista lektionen. Repetition.

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 14

TNM065 Johan Eliasson johel964 Dokumentstrukturer Kristina Engström krien026

Kort om klasser och objekt En introduktion till GUI-programmering i Java

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Föreläsning 8 - del 2: Objektorienterad programmering - avancerat

OOP Objekt-orienterad programmering

Vad kännetecknar en god klass. Vad kännetecknar en god klass. F12 Nested & Inner Classes

Android och iphone. Kalle Prorok April 2011

LiTHehack? Här? lithehack se koma Tisdagar och torsdagar

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 7 Erik Nilsson, Institutionen för Datavetenskap, LiU

Målen med OOSU. Objektorienterad programmering. Objektorienterad programmering. Karlstads Universitet, Johan Öfverberg 1

Energieffektiv GUI design

EDA095 HTML. Per Andersson. April 26, Lund University Innehåll: HTML, CSS, DOM, JavaScript

WINDOWS PRESENTATION FOUNDATION LEKTION 1

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

Tentamen Nätverksprogrammering Lösningsförslag

CliMate följer Tre-lager-arkitektur. Domänobjekt - domänlogiklagret. Viktiga domänklasser i CliMate. De tre lagren. Paketen i CliMate:

Vad utmärker ett bra gränssnitt?

Lycka till! TENTAMEN: Objektorienterade applikationer. Läs detta! 1 (6) Tentamen

Klasshierarkier. Klasser kan byggas på redan definierade klasser

Lösningar till tentamen i EDAF25

Android - Tips & Tricks

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p

Grundläggande programmering DVG A08 & ISG A04. Allmän information. Å vem är jag då. Karlstads Universitet, Johan Öfverberg 1

Appar med ryggrad. Introduktion till JavaScriptramverket Backbone

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

Objektorienterad programmering Föreläsning 15. Grafiska användargränssnitt (GUI Graphical User Interface)

TDDI82 - Projekt. Christoffer Holm. Institutionen för datavetenskap (IDA)

MVC med Javascript och Ajax. Filip Ekberg

Tentamen Lösningar EDA698 Realtidssystem

TENTAMEN. Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg. VT-13 Datum: Tid: kl

Objektorientering. Objekt och metoder. Objektorientering. Viktiga begrepp. Klass. Objekt. Deklarativ programmering

Transkript:

Entreprenöriell programmering Android översikt

Vad som skiljer Android från Java Responsiv Appar får ett par sekunder på sig att reagera på användarinput Resurssnål Appar i bakgrunden dödas när minnet behövs för annat Så fort app:en hamnar i bakgrunden är det fritt fram för Android att döda den Jfr. vanlig Quit på en desktop Ges ingen tid att spara undan viktig info

Java Android Lägre minnesanv.

Android app

Egen mobil eller platta

Felsökning via USB-koppling

Emulator Emulerar en AVD (Android Virtual Device) Har AVD Välj CPU, etc. HAX hardware acceleration Kamera Sensorer Nätverk http://developer.android.com/tools/devices/emulator.html

Lifecycle för kodkomponenter

Spara undan tillstånd Processen stoppas Utslängd urminnet

Aktiviteter startas av Android public class MainActivity extends AppCompatActivity { @Override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); } Ingen konstruktor @Override protected void onpause()

Aktiviteter dödas av Android Dödas T.ex. om appen hamnat i bakgrunden (och ont om minne) T.ex. om telefonen roteras Spara undan tillstånd i god tid, innan aktiviteten dödas. Två sätt: Ge dina vyer Id, och låt systemet spara dessa vyer override på onsaveinstancestate()

GUI Graphical User Interface

Views (grafiska element)

XML extensible Markup Language Ung. som html, fast för vilka data som helst fritt att bestämma taggar och attribut <img src="madonna.jpg" alt='foligno Madonna, by Raphael' /> <step number="3">connect A to B.</step>

Android UI layout i XML <LinearLayout xmlns:android="http://schemas.android.com/ " xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:orientation= vertical" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior" tools:showin="@layout/activity_my">

XML kod XML Kod Statisk placering och utseende på komponenter (dvs. kan inte ta bort under körning) Tomma behållare kan läggas ut i xml (FrameLayout) Dynamiskt tillägg/borttagning av element Fyllning med innehåll

Fragment Fragment kan åka in/ur activity Kan inte lita på att fragment x just nu finns där Fragment ska kommunicera via aktiviteten Komm. till aktivitet Definiera ett interface som aktiviteten ska implementera Anropa callback-metoden vid knapptryck, etc Komm. från aktivitet Hitta fragmentet, findfragmentbyid() http://developer.android.com/training/basics/fragments/co mmunicating.html

Vanliga problem med fragment Hamnat utanför skärmen Är Layout:en rätt konfigurerad? T.ex. LinearLayout direction Hittar inte vyn ifrån koden Finns vyn verkligen på skärmen? Lägg anrop findviewbyid( ) i onactivitycreated()

Fånga upp klick I XML: <Button android:layout_width="wrap_content android:layout_height="wrap_content android:text="@string/button_send android:onclick="sendmessage" /> I din kod: public void sendmessage(view view) { }

Fånga upp klick MyFragment implements onclicklistener Button btn = (Button) findviewbyid(r.id.mybutton); btn.setonclicklistener(new View.OnClickListener() { @Override }); public void onclick(view view) { sendmessage(view); } public void sendmessage(view view) { }

Olika skärmstorlekar http://developer.android.com/guide/practices/tablets-and-handsets.html

Aktivitet Huvudbeståndsdel i appen

Aktivitet Main <activity... > <intent-filter... > <action android:name="android.intent.action.main" /> <category android:name="android.intent.category.launcher" /> </intent-filter>... </activity>

Activity Ger uppdelning i tasks som är logiska för användaren Skriva inlägg Kolla på flöde Dela en bild Upptar hela skärmen När användaren klar med uppgiften Bakåt-knapp Aktiviteten dödas

Anrop med intent Går via OS Vet inte alltid om finns aktivitet som kan ta emot Android kan launcha app om nödvändigt

Anrop av aktiviteter med intent Förfrågan att någon utför en typ av uppgift Intent intent = new Intent(Intent.ACTION_VIEW, ); fyll på med extra information att skicka med startactivity(intent); Starta aktivitet i egna appen Intent intent = new Intent(this, NextActivity.class); fyll på med extra information att skicka med startactivity(intent);

Att ta emot resultat från en aktivitet Activity1 anropar activity2 startactivityforresult( ) Callback: Activity1 implementerar onactivityresult() som activity2 är förprogrammerad att anropa Ex activity1: @Override protected void onactivityresult(, Intent data) { }

Nätverk

Nätverk AndroidAsyncHttp Populärt bibliotek http://loopj.com/android-async-http/ f Volley Googles egna bibliotek http://developer.android.com/training/volley/ind ex.html

Volley

För större nerladdningar Använd inte Volley Kräver att hela hämtade innehållet ligger i minnet under parsning Bättre att starta en Service i bakgrunden OBS! Bör startas på sin egen tråd! Mha AsyncTask OBS! Ingen garanti att servicen inte avslutas abrupt (t.ex. vid skärmrotation)

Trådar

GUI responsiveness Appen måste reagera på användarinput inom 5 sekunder (helst 100-200 ms) Annars får användaren en "Application Not Responding" (ANR) dialog

Trådar Render thread Animeringar UI thread (main thread) Reseverat för användarinteraktion Visa info Reagera på klick, etc. Worker thread (1, 2, 3,.) För tunga/långsamma saker i bakgrunden

AsyncTask private class HeavyTask extends AsyncTask<Long>{ } // Do the long-running work in here protected Long doinbackground(url... urls) { // This is called when doinbackground() is finished protected void onpostexecute(long result) { } shownotification("downloaded " + result + " bytes"); Ber artigt att få komma tillbaks till UI-tråden (så fort detta blir möjligt/lämpligt)

Nästa steg i projektet Interaktionsflöde

Tidslinje Design UI Cont. Positionera appidé Interaktionsflöde Implementera interaktionsflöde Klickbart UI, med lyssnare Lägg till innehåll, nätverk, databas Testning, refaktorering

Sitemap Produkt Startsida Kundvagn Sök Produktöversikt Kassa Figur 4.5 Interaktionsdesign och UX Författaren och Studentlitteratur

Wire-frame Figur 4.7 Interaktionsdesign och UX Författaren och Studentlitteratur

Seminarium Frivilligt deltagande Pitch:a din appidé och tänkt flöde 5 min pitch 5 min diskussion i gruppen Frågor, förslag

rita.kovordanyi@liu.se www.liu.se