Du bist nicht angemeldet.

Android KoordDroid v1

Lieber Besucher, herzlich willkommen bei: DeveloperTalk. Falls dies dein erster Besuch auf dieser Seite ist, lies bitte die Hilfe durch. Dort wird dir die Bedienung dieser Seite näher erläutert. Darüber hinaus solltest du dich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutze das Registrierungsformular, um dich zu registrieren oder informiere dich ausführlich über den Registrierungsvorgang. Falls du dich bereits zu einem früheren Zeitpunkt registriert hast, kannst du dich hier anmelden.

Erik

Profi

  • »Erik« ist der Autor dieses Themas

Beiträge: 1 274

Registrierungsdatum: 22.06.2011

Wohnort: Deutschland ;)

Danksagungen: 307

  • Private Nachricht senden

1

07.10.2011, 15:08

KoordDroid v1

Moin Leute :)

Ist ja noch etwas leer hier in der Section, deswegen hier meine erste komplexere App. Es geht um KoordDroid, eine App, mit der man GPS Koordinaten verarbeiten kann, zum Beispiel die Entfernung zwischen zwei Punkten ausrechen. Diese App fällt mal wieder in die Kategorie extrem sinnlos, aber ne super Übung. Wir sollten in Mathe in so einer Projektwoche einen großen Sportplatz vermessen sollten, also die GPS Koordinaten einzelner Messpunkte bestimmen, um dann einen maßstabsgetreuen Umrissplan zu zeichnen. Außerdem sollten wir die Fläche eines Sees annähernd bestimmen, auch mit GPS.
Nachdem mann die Koordinaten auf einem ungefähren Grundriss eingetragen hatte, musste man die Werte jetzt verarbeiten. Da wir die Koordinaten nur mit Grad und Minuten messen konnten (z.B. 54° 19,123'), mussten wir sie zuerst in Grad mit Dezimalstellen umrechnen. Außerdem mussten wir für die zweite Aufgabe jeweils den Abstand zwischen zwei Punkten ausrechnen. Da das ganze bei einer relativ großen Anzahl an Punkten extrem viel Aufwand ist (und langweilig noch dazu), ist diese App entstanden, in die man die Punkte mit Grad und Minuten eintragen kann. Alle weiteren Rechnungen übernimmt die App.

Okay, hier ist denn mal der Quellcode:
Java Klassen:

Koord.java (Repräsentiert eine Koordinate)

Spoiler Spoiler

Java-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
package de.erik.koorddroid;

import java.lang.Math;
import java.util.Vector;

public class Koord {
	public final int U = 40000; //Erdumfang
	public final int R = 6370;  //Erdradius
	
	//Breitengrad = latitude
	//Längengrad  = longitude
	
	private double latitudeDeg;
	private double latitudeMin;
	private char   latitudeDir;
	private double longitudeDeg;
	private double longitudeMin;
	private char   longitudeDir;
	
	public Koord(char latitudeDir, double latitudeDeg, double latitudeMin, char longitudeDir, double longitudeDeg, double longitudeMin) {
		this.latitudeDeg  = latitudeDeg;
		this.latitudeMin  = latitudeMin;
		this.latitudeDir  = latitudeDir;
		this.longitudeDeg = longitudeDeg;
		this.longitudeMin = longitudeMin;
		this.longitudeDir = longitudeDir;
	}
	
	//Umgerechneter Breitengrad
	public double getLatitude() {
		return this.latitudeDeg + (this.latitudeMin / 60);
	}
	
	//Umgerechneter Längengrad
	public double getLongitude() {
		return this.longitudeDeg + (this.longitudeMin / 60);
	}
	
	//Distanz zum Äquator: l=40.000km * N/360°
	public double getDistanceToEquator() {
		return this.U * (this.getLatitude() / 360);
	}
	
	//Distanz zum Greenwich-Meridian: r = R * cos(N); U = 2*pi*r; b=U * O/360°
	public double getDistanceToZeroMeridian() {
		double r = this.R * Math.cos(this.getLatitude() * Math.PI / 180); //Radius des Breitenkreises
		double u = 2 * Math.PI * r;
		return u * (this.getLongitude() / 360);
	}
	
	//Abstand zwischen zwei Koords (im Metern)
	public static double getDistance(Koord koord1, Koord koord2) {
		/*
		double a = Util.getValue(koord1.getLatitude() - koord2.getLatitude());
		double b = Util.getValue(koord1.getLongitude() - koord2.getLongitude());
		//Satz des Pythagoras:
		double c = Math.sqrt(a*a + b*b);
		return koord2.getLatitude();
		*/
		
		//Lösungsweg nach http://www.java-forum.org/mathematik/21041-gps-koordinaten.html
		double lat1InRad = koord1.getLatitude() * Math.PI / 180;
		double lat2InRad = koord2.getLatitude() * Math.PI / 180;

		double tmp = Math.sin(lat1InRad) * Math.sin(lat2InRad) + Math.cos(lat1InRad)
				* Math.cos(lat2InRad)
				* Math.cos((koord2.getLongitude() - koord2.getLongitude()) * Math.PI / 180);

		tmp = Math.acos(tmp);

		return tmp * 6378388;
	}
	
	//Zwei Koords vertauschen
	public static void interchange(Koord koord1, Koord koord2, Vector<Koord> koords) {
		if(koords.indexOf(koord1) > koords.indexOf(koord2)) {
			Koord temp = koord1;
			koords.set(koords.indexOf(koord1), koord2);
			koords.set(koords.indexOf(koord2), temp);
		} else {
			Koord temp = koord2;
			koords.set(koords.indexOf(koord2), koord1);
			koords.set(koords.indexOf(koord1), temp);
		}
	}
	
	@Override
	public String toString() {
		return this.latitudeDir + ": " + this.latitudeMin + "\' " + this.longitudeDir + ": " + this.longitudeMin + "\'";
	}
	
	public char getLatitudeDir() {
		return this.latitudeDir;
	}
	
	public double getLatitudeDeg() {
		return this.latitudeDeg;
	}
	
	public double getLatitudeMin() {
		return this.latitudeMin;
	}
	
	public double getLongitudeDeg() {
		return this.longitudeDeg;
	}
	
	public double getLongitudeMin() {
		return this.longitudeMin;
	}
	
	public char getLongitudeDir() {
		return this.longitudeDir;
	}
	
	public void setLatitudeDir(char laDir) {
		this.latitudeDir = laDir;
	}
	
	public void setLatitudeDeg(double laDeg) {
		this.latitudeDeg = laDeg;
	}
	
	public void setLatitudeMin(double laMin) {
		this.latitudeMin = laMin;
	}
	
	public void setLongitudeDeg(double loDeg) {
		this.longitudeDeg = loDeg;
	}
	
	public void setLongitudeMin(double loMin) {
		this.longitudeMin = loMin;
	}
	
	public void setLongitudeDir(char loDir) {
		this.longitudeDir = loDir;
	}
}


KoordDroidActivity.java (Halt die Activity der App)

Spoiler Spoiler

Java-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
package de.erik.koorddroid;


import java.util.Vector;
import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Spinner;
import android.widget.TextView;

public class KoordDroidActivity extends Activity {
	
	public Koord currentKoord;
	public Vector<Koord> koords = new Vector<Koord>();
	
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.setKoordListView();
    }
    
    public void setEditKoordView() {
    	
    	Koord koord = this.currentKoord;
    	
    	setContentView(R.layout.edit_koord);
    	Spinner spinner = (Spinner) findViewById(R.id.la_spinner);
        ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
                this, R.array.latitude_array, android.R.layout.simple_spinner_item);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner.setAdapter(adapter);
        spinner = (Spinner) findViewById(R.id.lo_spinner);
        adapter = ArrayAdapter.createFromResource(
                this, R.array.longitude_array, android.R.layout.simple_spinner_item);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner.setAdapter(adapter);
        
        EditText laDeg = (EditText) findViewById(R.id.input_la_deg);
        laDeg.setText(Double.toString(koord.getLatitudeDeg()));
        EditText laMin = (EditText) findViewById(R.id.input_la_min);
        laMin.setText(Double.toString(koord.getLatitudeMin()));
        EditText loDeg = (EditText) findViewById(R.id.input_lo_deg);
        loDeg.setText(Double.toString(koord.getLongitudeDeg()));
        EditText loMin = (EditText) findViewById(R.id.input_lo_min);
        loMin.setText(Double.toString(koord.getLongitudeMin()));
        
        Button button = (Button) findViewById(R.id.ok_button);
        button.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
            	EditText laDeg = (EditText) findViewById(R.id.input_la_deg);
                EditText laMin = (EditText) findViewById(R.id.input_la_min);
                EditText loDeg = (EditText) findViewById(R.id.input_lo_deg);
                EditText loMin = (EditText) findViewById(R.id.input_lo_min);
                
                //Wenn in einem Feld nichts steht, nichts machen
                if(laDeg.getText().toString().equals("") || laMin.getText().toString().equals("") || loDeg.getText().toString().equals("") || loMin.getText().toString().equals("")) {
                	return;
                }
                editCurrentKoord('N', Double.parseDouble(laDeg.getText().toString()), Double.parseDouble(laMin.getText().toString()), 'O', Double.parseDouble(loDeg.getText().toString()), Double.parseDouble(loMin.getText().toString()));
                setKoordListView();
            }
        });

    }
    
    public void setKoordListView() {
    	setContentView(R.layout.koord_list);
    	
    	ListView lv = (ListView) findViewById(R.id.list_koords);
    	
    	lv.setAdapter(new ArrayAdapter<String>(this, R.layout.list_item, this.getKoordsAsStringArray()));

    	  
    	lv.setTextFilterEnabled(true);

    	lv.setOnItemClickListener(new OnItemClickListener() {
    		public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    			currentKoord = koords.elementAt(position);
    			setKoordDetailsView();
    	    }
    	});

    	Button button = (Button) findViewById(R.id.new_koord);
        button.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
            	addNewKoord();
            }
        });
        
        Button button2 = (Button) findViewById(R.id.quit_button);
        button2.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
            	finish(); //App beenden
            }
        });
    }
    
    public void editCurrentKoord(char laDir, double laDeg, double laMin, char loDir, double loDeg, double loMin) {
    	//currentKoord = new Koord(laDir, laDeg, laMin, loDir, loDeg, loMin);
    	this.currentKoord.setLatitudeDir(laDir);
    	this.currentKoord.setLatitudeDeg(laDeg);
    	this.currentKoord.setLatitudeMin(laMin);
    	this.currentKoord.setLongitudeDir(loDir);
    	this.currentKoord.setLongitudeDeg(loDeg);
    	this.currentKoord.setLongitudeMin(loMin);
    }
    
    public String[] getKoordsAsStringArray() {
    	String[] newarr = new String[this.koords.size()];
    	for(int i = 0; i < this.koords.size(); i++) {
    		newarr[i] = "Punkt " + (i+1) + ": " + this.koords.elementAt(i).toString();
    	}
    	return newarr;
    }
    
    public Koord addNewKoord() {
    	Koord k = new Koord('N', 54d, 19d, 'O', 10d, 7d); //Defaultwerte
    	this.koords.add(k);
    	this.currentKoord = k;
    	this.setEditKoordView();
    	return k;
    }
    
    public void setKoordDetailsView() {
    	setContentView(R.layout.koord_details);
    	Koord koord = this.currentKoord;
    	TextView tv = (TextView) findViewById(R.id.details);
    	String text = "";
    	text += "Punkt " + (this.koords.indexOf(koord) + 1) + "\n";
    	text += "Koordinate: " + koord.getLatitudeDir() + " " + koord.getLatitudeDeg() + "° " + koord.getLatitudeMin() + "'  ";
    	text += koord.getLongitudeDir() + " " + koord.getLongitudeDeg() + "° " + koord.getLongitudeMin() + "'\n";
    	text += "Breitengrad: " + koord.getLatitude() + "°\n";
    	text += "Längengrad: " + koord.getLongitude() + "°\n";
    	text += "Dintanz zum Äquator: " + koord.getDistanceToEquator() + "km\n";
    	text += "Distanz zum 0-Meridian: " + koord.getDistanceToZeroMeridian() + "km\n";
    	tv.setText(text);
    	
    	Spinner spinner = (Spinner) findViewById(R.id.distance_spinner);
        ArrayAdapter<CharSequence> adapter = new ArrayAdapter<CharSequence>(this, android.R.layout.simple_spinner_item, getKoordsAsStringArray());
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner.setAdapter(adapter);
        
        Spinner spinner2 = (Spinner) findViewById(R.id.interchange_spinner);
        ArrayAdapter<CharSequence> adapter2 = new ArrayAdapter<CharSequence>(this, android.R.layout.simple_spinner_item, getKoordsAsStringArray());
        adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner2.setAdapter(adapter2);
        
        Button button1 = (Button) findViewById(R.id.calc_distans);
        button1.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
            	TextView tv = (TextView) findViewById(R.id.details);
    			String text = (String) tv.getText();
    			Spinner spinner = (Spinner) findViewById(R.id.distance_spinner);
    			Koord koord = koords.elementAt((int)spinner.getSelectedItemId());
    			text += "Distanz zu Punkt " + ((int)spinner.getSelectedItemId()+1) + " (" + koord.toString() + "): " + Koord.getDistance(currentKoord, koord) + "m\n";
    			tv.setText(text);
            }
        });
        
        Button button2 = (Button) findViewById(R.id.edit_koord);
        button2.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
            	setEditKoordView();
            }
        });
        
        Button button3 = (Button) findViewById(R.id.list_button);
        button3.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
            	setKoordListView();
            }
        });
        
        Button button4 = (Button) findViewById(R.id.delete_koord);
        button4.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
            	koords.remove(currentKoord);
            	setKoordListView();
            }
        });
        
        Button button5 = (Button) findViewById(R.id.move_up);
        button5.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
            	if(currentKoord != koords.firstElement()) {
            		Koord.interchange(currentKoord, koords.elementAt(koords.indexOf(currentKoord) - 1), koords);
            		setKoordDetailsView();
            	}
            }
        });
        
        Button button6 = (Button) findViewById(R.id.move_down);
        button6.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
            	if(koords.indexOf(currentKoord) != koords.size()-1) {
            		Koord.interchange(currentKoord, koords.elementAt(koords.indexOf(currentKoord) + 1), koords);
            		setKoordDetailsView();
            	}
            }
        });
        
        Button button7 = (Button) findViewById(R.id.interchange_button);
        button7.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
            	Spinner spinner = (Spinner) findViewById(R.id.distance_spinner);
            	Koord.interchange(currentKoord, koords.elementAt((int)spinner.getSelectedItemId()), koords);
            	setKoordDetailsView();
            }
        });
        
    }
    
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event)  {
        if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
            return false;
        }

        return super.onKeyDown(keyCode, event);
    }
}


Layout XMLs:

edit_koord.xml (Werte einer Koordinate bearbeiten)

Spoiler Spoiler

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="match_parent"
  android:layout_height="match_parent">
    <TextView android:text="@string/latitude" android:id="@+id/TextView02" android:layout_width="wrap_content" android:textAppearance="?android:attr/textAppearanceLarge" android:layout_height="wrap_content"></TextView>
    <Spinner android:layout_height="wrap_content" android:layout_width="match_parent" android:id="@+id/la_spinner"></Spinner>
    <TextView android:text="@string/degree" android:id="@+id/TextView01" android:layout_width="wrap_content" android:textAppearance="?android:attr/textAppearanceMedium" android:layout_height="wrap_content"></TextView>
    <EditText android:inputType="numberDecimal" android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/input_la_deg"></EditText>
    <TextView android:text="@string/minutes" android:id="@+id/TextView03" android:layout_width="wrap_content" android:textAppearance="?android:attr/textAppearanceMedium" android:layout_height="wrap_content"></TextView>
    <EditText android:inputType="numberDecimal" android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/input_la_min"></EditText>
    <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:textAppearance="?android:attr/textAppearanceLarge" android:layout_height="wrap_content" android:text="@string/longitude"></TextView>
    <Spinner android:layout_height="wrap_content" android:layout_width="match_parent" android:id="@+id/lo_spinner"></Spinner>
    <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:textAppearance="?android:attr/textAppearanceMedium" android:text="@string/degree" android:layout_height="wrap_content"></TextView>
    <EditText android:inputType="numberDecimal" android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/input_lo_deg"></EditText>
    <TextView android:id="@+id/textView3" android:layout_width="wrap_content" android:textAppearance="?android:attr/textAppearanceMedium" android:layout_height="wrap_content" android:text="@string/minutes"></TextView>
    <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:inputType="numberDecimal" android:id="@+id/input_lo_min"></EditText>
    <Button android:layout_height="wrap_content" android:layout_width="match_parent" android:text="@string/ok" android:id="@+id/ok_button"></Button>
    
</LinearLayout>


koord_details.xml (Die ausgerechneten Werte der Koordinaten)

Spoiler Spoiler

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="match_parent"
  android:layout_height="match_parent">
    <TextView android:text="TextView" android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/details"></TextView>
    <LinearLayout android:layout_width="match_parent" android:id="@+id/linearLayout1" android:layout_height="wrap_content" android:weightSum="1">
        <Spinner android:layout_height="wrap_content" android:layout_weight="1" android:layout_width="wrap_content" android:id="@+id/distance_spinner"></Spinner>
        <Button android:id="@+id/calc_distans" android:text="@string/calc_distance" android:layout_height="wrap_content" android:layout_width="wrap_content"></Button>
    </LinearLayout>
    <LinearLayout android:id="@+id/linearLayout2" android:layout_height="wrap_content" android:layout_width="match_parent">
        <Spinner android:layout_weight="1" android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/interchange_spinner" android:prompt="@string/inerchange_with"></Spinner>
        <Button android:layout_height="wrap_content"  android:layout_width="wrap_content" android:id="@+id/interchange_button" android:text="@string/interchange"></Button>
        <Button android:id="@+id/move_up" android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="@string/up"></Button>
        <Button android:id="@+id/move_down" android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="@string/down"></Button>
    </LinearLayout>
    <Button android:layout_height="wrap_content" android:layout_width="match_parent" android:text="@string/edit" android:id="@+id/edit_koord"></Button>
    <Button android:layout_height="wrap_content" android:layout_width="match_parent" android:id="@+id/delete_koord" android:text="@string/delete"></Button>
    <Button android:layout_height="wrap_content" android:layout_width="match_parent" android:text="@string/list" android:id="@+id/list_button"></Button>
    
</LinearLayout>


koord_list.xml (Liste der Koordinaten)

Spoiler Spoiler

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="match_parent"
  android:layout_height="match_parent">
    <TextView android:text="TextView" android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/details"></TextView>
    <LinearLayout android:layout_width="match_parent" android:id="@+id/linearLayout1" android:layout_height="wrap_content" android:weightSum="1">
        <Spinner android:layout_height="wrap_content" android:layout_weight="1" android:layout_width="wrap_content" android:id="@+id/distance_spinner"></Spinner>
        <Button android:id="@+id/calc_distans" android:text="@string/calc_distance" android:layout_height="wrap_content" android:layout_width="wrap_content"></Button>
    </LinearLayout>
    <LinearLayout android:id="@+id/linearLayout2" android:layout_height="wrap_content" android:layout_width="match_parent">
        <Spinner android:layout_weight="1" android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/interchange_spinner" android:prompt="@string/inerchange_with"></Spinner>
        <Button android:layout_height="wrap_content"  android:layout_width="wrap_content" android:id="@+id/interchange_button" android:text="@string/interchange"></Button>
        <Button android:id="@+id/move_up" android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="@string/up"></Button>
        <Button android:id="@+id/move_down" android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="@string/down"></Button>
    </LinearLayout>
    <Button android:layout_height="wrap_content" android:layout_width="match_parent" android:text="@string/edit" android:id="@+id/edit_koord"></Button>
    <Button android:layout_height="wrap_content" android:layout_width="match_parent" android:id="@+id/delete_koord" android:text="@string/delete"></Button>
    <Button android:layout_height="wrap_content" android:layout_width="match_parent" android:text="@string/list" android:id="@+id/list_button"></Button>
    
</LinearLayout>


list_item.xml (Template für Spinnerelemente)

Spoiler Spoiler

Quellcode

1
2
3
4
5
6
7
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:padding="10dp"
    android:textSize="16sp" >
</TextView>


Ja, es sind nur 2 Klassen und vielleicht auch kein richtiges MVC, weiß ich selbst, danke trotzdem :)
OOP müsste trotzdem hinkommen.

ChangeLog:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
v1
-Man kann die App beenden
-Man kann die Reihenfolge der Punkte ändern (hoch+runter schieben, tauschen)
-Bug behoben, dass die App abstürtzt, wenn man bei einem Eingabefeld nichts eingibt
-Man kann Punkte löschen
-Icon

v1 pre (initial release)
Features:
-Liste mit beliebig vielen Punkten
-Koords hinzufügen und bearbeiten
-Ausrechnen von Distanz zwischen 2 Punkten
-Automatisches Anzeigen von Koordinaten nur in Grad und dem Abstand zum 0-Meridian bzw. zum Äquator


Geplante Änderungen für v2 (die in eckigen Klammern wird es nur vielleicht geben)

Quellcode

1
2
3
4
5
6
7
8
9
10
-Back-Key intigrieren
-Koordlisten speichern/laden
-Hauptmenü
-Android-Market
-besserer Code (wegen button1 und so :D)
-[Vorschau des Grundrisses]
-Nachfragen beim Löschen/Beenden
-Fehlermeldung, wenn man in einem Eingabefeld nichts eingegeben hat
-Fertiges Implementieren von den Richtungsbuchstaben (N/S, O/W)... Gibts aus Bedarfsgründen noch nicht wirklich.
-Bessere Defaultwerte beim Erstellen neuer Koordinaten


Brauch natürlich niemand, aber naja... Das zu Programmieren war lustig und eine echt gute Übung :)
Mirror: http://www.megaupload.com/?d=5JNG0Z4L
»Erik« hat folgende Datei angehängt:
  • Koord-Droid.rar (107,3 kB - 153 mal heruntergeladen - zuletzt: 12.11.2018, 02:39)
Beste Webite im Internet ( ͡° ͜ʖ ͡°)
xinra.de

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Erik« (07.10.2011, 17:20)


Es haben sich bereits 2 registrierte Benutzer bedankt.

Benutzer, die sich für diesen Beitrag bedankt haben:

Johannes S. (07.10.2011), Kevin (09.10.2011)