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;