Android pierwsza aplikacja

Podobne dokumenty
Programowanie urządzeń mobilnych w systemie Android. Ćwiczenie 7 Wykorzystanie układu LinearLayout

[Android] Podstawy programowania

Programowanie urządzeń mobilnych w systemie Android. Ćwiczenie 8 Wykorzystanie układu RelativeLayout

Programowanie urządzeń mobilnych. dr inż. Juliusz Mikoda

Podstawowe elementy GUI - zadania

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

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

RESTful Android. Na co zwrócić uwagę przy tworzeniu aplikacji klienckich REST na Androidzie

Laboratorium Systemów Mobilnych. Wykład 1

Systemy operacyjne na platformach mobilnych

Mechanizm zapisu preferencji

Systemy operacyjne na platformach mobilnych

Systemy operacyjne na platformach mobilnych

Programowanie urządzeń mobilnych. dr inż. Andrzej Grosser na podstawie wykładu dr inż. Juliusza Mikody

Mechanizm powiadomień

Tworzenie dialogów i wykorzystanie klasy Toast

akademia androida Http i AsyncTask część VII

Systemy operacyjne na platformach mobilnych

Fragmenty są wspierane od Androida 1.6

Programowanie obiektowe

ANDROID. OpenGL ES 1.0. Tomasz Dzieniak

Podstawowe elementy GUI - zadania

Programowanie urządzeń mobilnych. dr inż. Andrzej Grosser na podstawie wykładu dr inż. Juliusza Mikody

Wykorzystanie plików

Laboratorium 8 ( Android -pierwsza aplikacja)

JAVA : TELEFONY KOMÓRKOWE I ANDROID 1. WSTĘP

Szybciej (pisać) Łatwiej (czytać) Prościej (utrzymywać) Marcin Wąsowski Amsterdam Standard Sp. z o.o.

Języki i metody programowania Java Lab2 podejście obiektowe

Powiadomienia w systemie Android

JAVA W SUPER EXPRESOWEJ PIGUŁCE

public enum Environment { Development("Deweloperskie"), Test("Testowe"), Production("Produkcyjne"); private String name;

grafika 2D i animacja obsługa rotacji i elementy 3D-OpenGL w Androidzie

Obsługa SMS i telefonii

Laboratorium Systemów Mobilnych. Wykład 2

dr inż. Piotr Czapiewski Tworzenie aplikacji w języku Java Laboratorium 1

Budowa aplikacji wielowarstwowych zastosowanie szablonów. Laboratorium 2 Programowanie komponentowe Zofia Kruczkiewicz

Przykładowe roz wiązanie:

Dlaczego Android? Uczę się Javy więc piszę.. w Androidzie. Nie mam telefonu z Androidem!

Klasy i obiekty cz II

1. Co można powiedzieć o poniższym kodzie? public interface I { void m1() {}; static public void m2() {}; void abstract m3();

WYŻSZA SZKOŁA INŻYNIERYJNO EKONOMICZNA z siedzibą w Rzeszowie WYDZIAŁ PRZEDSIĘBIORCZOŚCI

Instrukcja implementacji sterownika wirtualnego portu szeregowego dla systemu Android. Opracowanie: Elzab Soft sp. z o.o.

Mobilne aplikacje multimedialne

Kurs programowania. Wykład 13. Wojciech Macyna. 14 czerwiec 2017

Systemy Rozproszone. Spis treści. Temat projektu: Regułowy system analizujacy logi. autorzy: Rafał Sadłowski, Sebastian Falkus, Michał Różycki

Instalujemy środowisko. Hello World! Odczyt/zapis informacji do komponentów na formie. onclick()

Języki i metody programowania Java Lab1 Zofia Kruczkiewicz

Java: interfejsy i klasy wewnętrzne

Wsparcie dla różnych urządzeń. SDK pozwala przystosować aplikację do większości tych wypadków

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

Java Platform Micro Edition

Zaawansowane aplikacje WWW - laboratorium

Wykład 12. Programowanie serwera MS SQL 2005 w C#

Mariusz Fraś. Instytut Informatyki. olitechnika Wrocławska. Systemy Wbudowane. Android. Dr inż. Mariusz Fraś. maf 1

Przypomnienie o klasach i obiektach

Języki i metody programowania Java Lab4 podejście obiektowe, zastosowanie pojemników

Tworzenie natywnych aplikacji na urządzenia mobilne - PhoneGap Tomasz Margalski

Wykład 7: Pakiety i Interfejsy

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

Programowanie - instrukcje sterujące

Życie aktywności Nawigując przez aplikacje poszczególne Aktywności przechodzą pomiędzy stanami. Dla przykładu gdy aktywność uruchamia się po raz

SWING c.d. przydatne narzędzia: JFileChooser, JOptionPane. drag'n drop, menu kontekstowe.

Tworzenie i wykorzystanie usług

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie

Jakarta POI. POIFS obsługa dokumentów OLE 2, HSSF dokumenty w formacie Excel'a, HWPF proste dokumenty w formacie Word 97,

Programowanie obiektowe

Wstęp do JUNG. Omówione elementy wykorzystane w Edge Color Project

Programowanie Urządzeń Mobilnych. Laboratorium nr 7, 8

Android. Zarz dzanie cyklem»ycia i stanem. Piotr Fulma«ski. March 10, 2015

Platformy Programistyczne Podstawy języka Java

Polimorfizm. dr Jarosław Skaruz

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie

1. Czynności przygotowujące aplikację działającą na platformie Java SE Biblioteka5 (należy ją pobrać z załącznika z p.1)

Wątki. Definiowanie wątków jako klas potomnych Thread. Nadpisanie metody run().

Modelowanie obiektowe - Ćw. 1.

Podstawy Programowania

Programowanie Urządzeń Mobilnych. Laboratorium nr 9,10

Zaawansowane aplikacje internetowe - laboratorium Web Services (część 1).

Zofia Kruczkiewicz, Programowanie obiektowe - java, wykład 2 1

Wykład 5 Okna MDI i SDI, dziedziczenie

0.1 Hierarchia klas Diagram Krótkie wyjaśnienie

BEAN VALIDATION. Waldemar Korłub. Narzędzia i aplikacje Java EE KASK ETI Politechnika Gdańska

1. Co można powiedzieć o poniższym kodzie?

Budowa prostej aplikacji wielowarstwowej. Laboratorium 1 Programowanie komponentowe Zofia Kruczkiewicz

Wprowadzenie do programowania w języku Visual Basic. Podstawowe instrukcje języka

Instrukcja tworzenia aplikacji EE na bazie aplikacji prezentowanej na zajęciach lab.4 z PIO umożliwiająca przez sieć dostęp wielu użytkownikom.

Programowanie w Javie

Działki Przygotowanie organizacyjne

Programowanie w języku Java. Bazy danych SQLite w Javie

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

Windows Workflow Foundation (wprowadzenie - prosty przykład Sequential Workflow):

dziedziczenie - po nazwie klasy wystąpią słowa: extends nazwa_superklasy

Wybieramy File->New->Project Wybieramy aplikację MFC->MFC Application jak na rysunku poniżej:

Wprowadzenie do tworzenia własnego modułu w kontrolerze Floodlight.

Języki Programowania II Wykład 3. Java podstawy. Przypomnienie

Layouty. Kilka layoutów

E:\DYDAKTYKA\ZAI\ZWWW\Laboratoria\L07\Java Persistence.doc 2011-lis-24, 17:0 Zaawansowane aplikacje internetowe Laboratorium Java Persistence.

Programowanie obiektowe

Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1)

Instrukcja 10 Laboratorium 13 Testy akceptacyjne z wykorzystaniem narzędzia FitNesse

Transkrypt:

Android pierwsza aplikacja I. Środowisko 1. Uruchomić środowisko Android Devloppers tools 2. Wybrać/Utworzyć Wokspace Mobile-cw2 II Projekt 1. Utworzyć nowy projekt klikając na w pasku narzędzi 2. Rozwinąć Android wybrać Android Application Project 3. Ustawić nazwę pakietu i obsługiwane SDK według Rysunku1-3 Rysunek 1 Rysunek 2

Rysunek 3 Rysunek 4 * Uwaga na Rysunku 4 Wybrany jest typ Activity Master/Detail dostępny tylko od wersji ADK 11 (Android 3.x Honeycomb) dla pierwszej aplikacji proszę wybrać Fullscreen Activity

Rysunek 5 Nazwa Activity i Layoutu Rysunek 6. Okno Po wygenerowaniu Projektu III Zmiana elementów Activity (resources) 1. Zmianan Layouty - z /res/layout otworzyć layaut dla tego activity a) usunąć wygenerowany layout b) rozwinąć z Palette ->layout i dodać do pustego obszaru Linear Layout (Vertical) b) a) c) w Outline zaznaczyć LinearLayout a następnie w Parameters Gravity ->center PaddingLeft i Right activity_horizontal_margin PaddingTop i Bottom activity_vertical_margin

2. Dodanie okienka kalkulatora a) Przeciągnąć nowy LinearLayout z Palette do podglądu b) zmienić -id nowego layoutu na @id/wiersz1 -Height na 0dp - Weight na.12 Pojawi się błąd kompilacji zasobów (row1) c) do Layotu row1 dodać TextView z następującymi paramatrami android:id="@+id/textview1" android:layout_height="wrap_content" android:gravity="right" android:maxlines="1" android:paddingleft="10dp" android:paddingright="10dp" android:text="0" android:textappearance="?android:attr/textappearancelarge" android:textsize="40sp" c) Dodajemy pierwszy rząd przycisków z nowym layoutem android:id="@+id/wiersz2" android:layout_weight=".12" > android:id="@+id/buttonczyscpam" android:text="@string/buttonczyscpam" android:id="@+id/buttondoddopam" android:text="@string/buttondoddopam" android:id="@+id/buttonusunzpam" android:text="@string/buttonusunzpam" android:id="@+id/buttonwczytzpam" android:text="@string/buttonwczytzpam" Błędy związane z brakiem zasobów należy na razie zignorować

oraz kolejne wiersze android:id="@+id/wiersz3" android:layout_weight=".12" > android:id="@+id/buttonczysc" android:text="@string/buttonczysc" android:id="@+id/buttonznak" android:text="@string/buttonznak" android:id="@+id/buttondziel" android:text="@string/buttondziel" android:id="@+id/buttonmnoz" android:text="@string/buttonmnoz" android:id="@+id/wiersz4" android:layout_weight=".12" > android:id="@+id/button7" android:text="@string/button7" android:id="@+id/button8" android:text="@string/button8" android:id="@+id/button9" android:text="@string/button9" android:id="@+id/buttonodejm" android:text="@string/buttonodejm"

android:id="@+id/wiersz5" android:layout_weight=".12" > android:id="@+id/button4" android:text="@string/button4" android:id="@+id/button5" android:text="@string/button5" android:id="@+id/button6" android:text="@string/button6" android:id="@+id/buttonplus" android:text="@string/buttonadd" android:id="@+id/wiersz6" android:layout_weight=".24" android:baselinealigned="false" > android:layout_weight=".75" android:orientation="vertical" > android:id="@+id/linearlayout1" android:layout_weight=".50" android:textsize="25sp" > android:id="@+id/button1" android:layout_weight=".33" android:text="@string/button1" android:id="@+id/button2" android:layout_weight=".33" android:text="@string/button2" android:id="@+id/button3" android:layout_weight=".34" android:text="@string/button3"

android:id="@+id/linearlayout2" android:layout_weight=".50" > android:id="@+id/button0" android:layout_weight=".66" android:text="@string/button0" android:id="@+id/buttonprzecinek" android:layout_weight=".34" android:text="@string/buttonprzecinek" android:id="@+id/buttonrown" android:text="@string/buttonrown" Teraz Uzupełniamy zasoby <string name="app_name">kalk</string> <string name="action_settings">settings</string> <string name="menu_settings">settings</string> <string name="button0">0</string> <string name="button1">1</string> <string name="button2">2</string> <string name="button3">3</string> <string name="button4">4</string> <string name="button5">5</string> <string name="button6">6</string> <string name="button7">7</string> <string name="button8">8</string> <string name="button9">9</string> <string name="buttonplus">+</string> <string name="buttonodejm">-</string> <string name="buttonmnoz">*</string> <string name="buttondziel">/</string> <string name="buttonznak">+/-</string> <string name="buttonprzecinek">.</string> <string name="buttonrown">=</string> <string name="buttonczysc">c</string> <string name="buttonczyscpam">mc</string> <string name="buttondoddopam">m+</string> <string name="buttonusunzpam">m-</string> <string name="buttonwczytzpam">mr</string> kalk.java package pl.edu.agh.wimiip.kalk; import android.os.bundle; import android.app.activity; import android.view.menu; import java.text.decimalformat; import android.annotation.suppresslint; import android.view.view; import android.view.view.onclicklistener; import android.view.window; import android.view.windowmanager; import android.widget.button; import android.widget.textview;

public class Kalk_prosty extends Activity implements OnClickListener { private TextView mcalculatordisplay; private Boolean userisinthemiddleoftypinganumber = false; private CalculatorBrain mcalculatorbrain; private static final String DIGITS = "0123456789."; DecimalFormat df = new DecimalFormat("@###########"); @SuppressLint("NewApi") @Override protected void oncreate(bundle savedinstancestate) { // Chowanie tytułu Okna requestwindowfeature(window.feature_no_title); // Chowanie paska statusu getwindow().addflags(windowmanager.layoutparams.flag_fullscreen); super.oncreate(savedinstancestate); setcontentview(r.layout.activity_kalk_prosty); mcalculatorbrain = new CalculatorBrain(); mcalculatordisplay = (TextView) findviewbyid(r.id.textview1); df.setminimumfractiondigits(0); df.setminimumintegerdigits(1); df.setmaximumintegerdigits(8); findviewbyid(r.id.button0).setonclicklistener(this); findviewbyid(r.id.button1).setonclicklistener(this); findviewbyid(r.id.button2).setonclicklistener(this); findviewbyid(r.id.button3).setonclicklistener(this); findviewbyid(r.id.button4).setonclicklistener(this); findviewbyid(r.id.button5).setonclicklistener(this); findviewbyid(r.id.button6).setonclicklistener(this); findviewbyid(r.id.button7).setonclicklistener(this); findviewbyid(r.id.button8).setonclicklistener(this); findviewbyid(r.id.button9).setonclicklistener(this); findviewbyid(r.id.buttonplus).setonclicklistener(this); findviewbyid(r.id.buttonodejm).setonclicklistener(this); findviewbyid(r.id.buttonmnoz).setonclicklistener(this); findviewbyid(r.id.buttondziel).setonclicklistener(this); findviewbyid(r.id.buttonznak).setonclicklistener(this); findviewbyid(r.id.buttonprzecinek).setonclicklistener(this); findviewbyid(r.id.buttonrown).setonclicklistener(this); findviewbyid(r.id.buttonczysc).setonclicklistener(this); findviewbyid(r.id.buttonczyscpam).setonclicklistener(this); findviewbyid(r.id.buttondoddopam).setonclicklistener(this); findviewbyid(r.id.buttonusunzpam).setonclicklistener(this); findviewbyid(r.id.buttonwczytzpam).setonclicklistener(this); @Override public void onclick(view v) { String buttonpressed = ((Button) v).gettext().tostring(); if (DIGITS.contains(buttonPressed)) { // Wciśnięto cyfrę if (userisinthemiddleoftypinganumber) { if (buttonpressed.equals(".") && mcalculatordisplay.gettext().tostring().contains(".")) { // // Eliminowanie wielu przecinków dziesiętnych else { mcalculatordisplay.append(buttonpressed); else { if (buttonpressed.equals(".")) { // //.cyfra = dodanie 0 na początku // before the decimal mcalculatordisplay.settext(0 + buttonpressed); else { mcalculatordisplay.settext(buttonpressed); userisinthemiddleoftypinganumber = true; else { // operator

if (userisinthemiddleoftypinganumber) { mcalculatorbrain.setoperand(double.parsedouble(mcalculatordisplay.gettext().tostring())); userisinthemiddleoftypinganumber = false; mcalculatorbrain.performoperation(buttonpressed); mcalculatordisplay.settext(df.format(mcalculatorbrain.getresult())); @Override protected void onsaveinstancestate(bundle outstate) { super.onsaveinstancestate(outstate); // Na przyszłość outstate.putdouble("operand", mcalculatorbrain.getresult()); outstate.putdouble("memory", mcalculatorbrain.getmemory()); @Override protected void onrestoreinstancestate(bundle savedinstancestate) { super.onrestoreinstancestate(savedinstancestate); // Na przyszłość mcalculatorbrain.setoperand(savedinstancestate.getdouble("operand")); mcalculatorbrain.setmemory(savedinstancestate.getdouble("memory")); mcalculatordisplay.settext(df.format(mcalculatorbrain.getresult())); CalcBran.Java package pl.edu.agh.wimiip.kalk; public class CalculatorBrain { // 3 + 6 = 9 private double moperand; private double mwaitingoperand; private String mwaitingoperator; private double mcalculatormemory; // operatory public static final String PLUS = "+"; public static final String ODEJMIJ = "-"; public static final String MNOZ = "*"; public static final String DZIEL = "/"; public static final String CZYSC = "C" ; public static final String CZYSCPAM = "MC"; public static final String DODAJDOPAM = "M+"; public static final String USUNZPAM = "M-"; public static final String WCZYTZPAM = "MR"; public static final String ZNAK = "+/-"; public CalculatorBrain() { // initialize variables upon start moperand = 0; mwaitingoperand = 0; mwaitingoperator = ""; mcalculatormemory = 0; public void setoperand(double operand) { moperand = operand; public double getresult() { return moperand; // do zmiany orientacji public void setmemory(double calculatormemory) { mcalculatormemory = calculatormemory; // do zmiany orientacji public double getmemory() { return mcalculatormemory; public String tostring() { return Double.toString(mOperand);

protected double performoperation(string operator) { if (operator.equals(czysc)) { moperand = 0; mwaitingoperator = ""; mwaitingoperand = 0; // mcalculatormemory = 0; else if (operator.equals(czyscpam)) { mcalculatormemory = 0; else if (operator.equals(dodajdopam)) { mcalculatormemory = mcalculatormemory + moperand; else if (operator.equals(usunzpam)) { mcalculatormemory = mcalculatormemory - moperand; else if (operator.equals(wczytzpam)) { moperand = mcalculatormemory; else if (operator.equals(znak)) { moperand = -moperand; else { performwaitingoperation(); mwaitingoperator = operator; mwaitingoperand = moperand; return moperand; protected void performwaitingoperation() { if (mwaitingoperator.equals(plus)) { moperand = mwaitingoperand + moperand; else if (mwaitingoperator.equals(odejmij)) { moperand = mwaitingoperand - moperand; else if (mwaitingoperator.equals(mnoz)) { moperand = mwaitingoperand * moperand; else if (mwaitingoperator.equals(dziel)) { if (moperand!= 0) { moperand = mwaitingoperand / moperand;