Register for your free account! | Forgot your password?

Go Back   elitepvpers > Off-Topics > Tutorials
You last visited: Today at 19:11

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Android - Installation und erste App (BMI-Berechner)

Discussion on Android - Installation und erste App (BMI-Berechner) within the Tutorials forum part of the Off-Topics category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Nov 2010
Posts: 368
Received Thanks: 89
Android - Installation und erste App (BMI-Berechner)

Das Betriebssystem vieler neuer Smartphones heißt Android, man kann Apps dafür mit Hilfe von ein wenig XML gut in Java Programmieren.



Am besten entwickelst du mit Eclipse,
Außerdem sind noch die folgenden Schritte nötig:

installiere das (Standard Developement Kit)

(Die Dateiträger-Abbilddatei) herunterladen und ZIP extrahieren

starte C:\Program Files\Android\android-sdk\SDK Manager und erzeuge eine
AVD (Android Visual Device) für dein Smartphone

Kopiere system.img aus dem Verzeichnis, in das extrahiert wurde und füge es in .android\avd\<AVD-Name>\ in ihrem Benutzer-Verzeichnis ein.
(Unter Mac muss eingestellt sein, dass System-Verzeichnisse sichtbar sein sollen)

zum Schluss noch eclipse starten und im Menü unter 'Help.Install New Software...' eine neue
Repository mit der URL: hinzufügen

mache nun ein neues Android-Projekt auf...

src/Main.java sieht dann wohl ungefähr so aus:
Code java:
Code:
package de.tutorials;
 
import android.app.Activity;
import android.os.Bundle;
 
public class Main extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // res/layout/main.xml wird als Inhalt festgelegt
        setContentView(R.layout.main);
    }
}
Um "Hallo World!" auszugeben, startest du das Projekt als Android-Application,
der Emulator braucht manchmal etwas (vor allem beim ersten Boot einer AVD), auf deinem Smartphone wird alles wesentlich schneller funktionieren.

Wähle anschließend die Code-Ansicht von res/layout/main.xml um eine richtige App zur BMI-Berechnung zu programmieren, im Beispiel verschachtle ich LinearLayouts ineinander, ich denke die Eigenschaften-Definitionen erklären sich von selbst.

Hier der XMLCode:

Code:
<?xml version="1.0" encoding="utf-8"?>
 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    <!-- HEIGHT -->
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="horizontal"
        android:layout_width="fill_parent"<!-- Komponente nutzt allen zur Verfügung stehenden Raum -->
        android:layout_height="wrap_content"<!-- Gegenteil zu ^ -->
        >
        <TextView
            android:id="@+id/height_lable" 
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="6"<!-- Anteil am Platz -->
            android:layout_marginTop="15dp"
            android:layout_marginLeft="8dp"
            android:text="@string/height_lable"
            android:textStyle="bold"
        />
        <EditText
            android:id="@+id/height_field"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="4"
            android:layout_marginTop="15dp"
            android:layout_marginRight="8dp"
            android:singleLine="true"
            android:gravity="right"
        /> 
    </LinearLayout>  
    <!-- WEIGHT -->
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="horizontal"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        >
        <TextView
            android:id="@+id/weight_lable" 
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="6"
            android:layout_marginLeft="8dp"
            android:text="@string/weight_lable"
            android:textStyle="bold"
        />
        <EditText
            android:id="@+id/weight_field"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="4"
            android:layout_marginRight="8dp"
            android:singleLine="true"
            android:gravity="right"
        /> 
    </LinearLayout>  
    <!-- RESULT -->
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="horizontal"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        >
        <Button
            android:id="@+id/calculate_button"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="6"
            android:layout_marginLeft="8dp"
            android:text="@string/calculate_button"
            android:textStyle="bold"
        />
        <TextView
            android:id="@+id/result_lable"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="3"
            android:layout_marginRight="8dp"
            android:layout_marginLeft="25dp"
            android:textStyle="bold"
        />
    </LinearLayout>
    <!-- DIAGNOSIS -->
    <TextView
        android:id="@+id/diagnosis_lable"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_marginRight="8dp"
        android:layout_marginLeft="16dp"
        android:layout_marginTop="6dp"
        android:textStyle="bold"
    />
 
</LinearLayout>

Referenzierte String oder Ähnliches wie z.B. 'android:text="@string/calculate_button"' in Zeile 73 müssen in res/values/strings.xml deklariert werden, die dann so aussieht:

Code:
<?xml version="1.0" encoding="utf-8"?>
 
<resources>
    <string name="app_name">BMI Calculator</string>
    <string name="height_lable">Height: </string>
    <string name="weight_lable">Weight: </string>
    <string name="calculate_button">Calculate</string>  
</resources>
Mittlerweile fehlt nur noch die eigentliche Logik des Programms, die in Main.java gehört.

Im folgenden Code werden Integers wie 'R.id.result_lable' benutzt, sie liegen in der automatisch generierten Klasse 'R' und repräsentieren Ressourcen.
Code java:

Code:
package us.javauniverse.android;
 
import android.app.Activity;
import android.app.AlertDialog;
import android.view.View.OnClickListener;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
 
public class Main extends Activity implements OnClickListener {
    
    private Button button;
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        // der Button wird als Java-Objekt erzeugt und bekommt eine Listener
        button = (Button) findViewById(R.id.calculate_button);
        button.setOnClickListener(this);
    }
 
    public void onClick(View v) {
        TextView tv_result = (TextView) findViewById(R.id.result_lable);
        TextView tv_diagnosis = (TextView) findViewById(R.id.diagnosis_lable);
        EditText et_height = (EditText) findViewById(R.id.height_field);
        EditText et_weight = (EditText) findViewById(R.id.weight_field);
        try{
            // BMI berechnen
            double height = Double.parseDouble(et_height.getText().toString());
            double weight = Double.parseDouble(et_weight.getText().toString());
            double result = (weight / (height*height));
            // Diagnose auswählen
            if(result < 16.5){
                tv_diagnosis.setText("Diagnosis: Severely Underweight");
                tv_result.setTextColor(getResources().getColor(R.color.red));
                tv_diagnosis.setTextColor(getResources().getColor(R.color.red));
            }
            else if(result < 18.5){
                tv_diagnosis.setText("Diagnosis: Underweight");
                tv_result.setTextColor(getResources().getColor(R.color.yellow));
                tv_diagnosis.setTextColor(getResources().getColor(R.color.yellow));
            }
            else if(result < 25){
                tv_diagnosis.setText("Diagnosis: Normal");
                tv_result.setTextColor(getResources().getColor(R.color.green));
                tv_diagnosis.setTextColor(getResources().getColor(R.color.green));
            }
            else if(result < 30){
                tv_diagnosis.setText("Diagnosis: Overweight");
                tv_result.setTextColor(getResources().getColor(R.color.yellow));
                tv_diagnosis.setTextColor(getResources().getColor(R.color.yellow));
            }
            else if(result < 35){
                tv_diagnosis.setText("Diagnosis: Obese Class I");
                tv_result.setTextColor(getResources().getColor(R.color.yellow));
                tv_diagnosis.setTextColor(getResources().getColor(R.color.yellow));
            }
            else if(result < 40){
                tv_diagnosis.setText("Diagnosis: Obese Class II");
                tv_result.setTextColor(getResources().getColor(R.color.red));
                tv_diagnosis.setTextColor(getResources().getColor(R.color.red));
            }
            else{
                tv_diagnosis.setText("Diagnosis: Obese Class III");
                tv_result.setTextColor(getResources().getColor(R.color.red));
                tv_diagnosis.setTextColor(getResources().getColor(R.color.red));
            }
            // Ergebniss runden und ausgeben
            result *= 100;
            int roundedResult = (int) result;
            result = roundedResult;
            tv_result.setText("BMI: "+result/100);
        }
        // bei falschen Eingaben (keine Zahlen)
        catch(NumberFormatException ex){
            tv_result.setText("");
            tv_diagnosis.setText("");
            new AlertDialog.Builder(this).setMessage("Please just enter numbers!").setNeutralButton("OK", null).show();
        }
    }
    
}
Auch 'R.color.yellow', ect. müssen in XML deklariert werden, und zwar in res/values/color.xml

Hier der Datei-Inhalt:
Code xml:

Code:
<?xml version="1.0" encoding="utf-8"?>
 
<resources> 
    <color name="green">#0F0</color>
    <color name="yellow">#FF0</color>
    <color name="red">#F00</color>
</resources>

Wenn du das Projekt jetzt wider startest, hast du schon eine ziemlich professionelle App,
die beliebig verändert und erweitert werden kann.

Die Dokumentation der Bibliotheken findest du unter

Quellen/Eigentümer:
erste-app-bmi-berechner.html


Danke Vielmals!
Black2Jimy is offline  
Old 07/01/2011, 12:10   #2
 
GotDamned's Avatar
 
elite*gold: 0
Join Date: Nov 2008
Posts: 1,918
Received Thanks: 3,080
Dein Quelllink ist nicht ganz richtig, da ist ne Leerzeile reingerutscht.

Quellen darfst du übrigens auch gut sichtbar markieren und in der selben Größe wie der restliche Text machen.

Und du hast dann wirklich nur das ganze Tut kopiert?
Du erklärst hier nichts besser als da?
Sieht für mich sehr sinnlos aus. Wer das nicht eh schon kann lernt dabei nichts.
GotDamned is offline  
Old 07/01/2011, 15:48   #3
 
elite*gold: 0
Join Date: Nov 2010
Posts: 368
Received Thanks: 89
Mich hat das interessiert hab gedacht die meisten von euch evtl. auch.
Ich kann damit eigentlich ne Menge anfangen, aber okay.
Teils hast du ja recht! trotzdem, wer ein wenig erfahrung hat wird das sicherlich interessieren
Black2Jimy is offline  
Reply


Similar Threads Similar Threads
LG GD880 <-> Android.
06/07/2011 - Smartphones - 9 Replies
HeyHo ; hab da mal so 'ne Frage bezüglich dem Lg gd 880. Also dieses Handy hat ya das Lg eigene Betreibsystem ; Und das finde ich selbst 'blöd'. App's gibt es auch soviele wie gar keine. Ausser Java halt ; aber die sind alle gay. Nun wollte ih fragen ; ob es eine möglichkeit gibt ; die Software zu wechseln ?
exp berechner
04/30/2011 - WarRock - 7 Replies
hallo ich usche einen exp berechner damit ich bsp:103947 ex plus 100.00 rechnen kann damit ich weiß welches lvl des dann ist hat jemand was vll. google nichts gefunden falls ich was falschgemacht hab nicht sauersein bin neuer hier :)
AutoIt BMI Berechner Problem
11/03/2010 - AutoIt - 5 Replies
Hey E*pvpers. Ich übe mich zurzeit ein wenig an AutoIt. Wollte zur Übung einen kleinen BMI Berechner schreiben. Es haben sich allerdings 2 Probleme ergeben: 1. Sobald ich einmal den Button "Berechne BMI" gedrückt habe wird mir ein Ergebnis angezeigt. Allerdings nur das eine Mal. Danach kann ich drücken und drücken und nichts passiert. Das gilt eig. für alle 3 Buttons. 2. Kriege ich zB. einen BMI von 19 raus, werden mir 3 Ergebnisse angezeigt anstatt eins. Dh. er prüft...
K/D-Berechner
10/14/2010 - WarRock Guides, Tutorials & Modifications - 20 Replies
Hey, habe hier mal einen K/D-Berechner Tool gemacht :mofo: Screen: http://img411.imageshack.us/img411/3757/kdberechne rscreenshot.jpg Downloadlink: Von Uploaded



All times are GMT +1. The time now is 19:13.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.