Hauptmenü

Werkzeuge

Kategorien

Archiv

Einhell

WebView Event wenn Content geladen

Erstellt in Android SDK am 1. Februar 2015 vom Daschmi

Möchte man eine Aktion auslösen, nachdem Inhalt in einen Webview geladen wurde so kann muss man die Webview Klasse überschreiben:

public class MyWebView extends WebView {
  public eplanetWebView(Context context) {
    super(context);
  }

  @Override
  public void invalidate() {
    super.invalidate();
    if (getContentHeight() > 0) {
      // Aktion auslösen
    }
  }
}

 

E-Mail mit Standard E-Mail App aus einer Android App versenden

Erstellt in Android SDK am 3. Januar 2014 vom Daschmi

Mit folgendem Codebeispiel kann eine Mail aus einer Android App versendet werden:

Intent mail = new Intent(android.content.Intent.ACTION_SEND);

mail.putExtra(android.content.Intent.EXTRA_EMAIL, new String[] { "ziel@domain.de" } );
mail.putExtra(android.content.Intent.EXTRA_SUBJECT, "Betreff der Mail");
mail.setType("plain/text");
mail.putExtra(android.content.Intent.EXTRA_TEXT, "Dies ist der Text der in der Mail erscheint.");

startActivity(mail);

Ressourcen anhand dynamischer ID finden

Erstellt in Android SDK am 30. Mai 2013 vom Daschmi

Um Elemente wie Bilder oder Buttons in einer Android Anwendung anzusprechen muss die ID bekannt sein. Zum Beispiel:

...

ImageButton ib = (ImageButton)findViewById(R.id.button1);
...

Wenn man jetzt aber mehrere Elemente mittels einer Schleife ansprechen will kann man so vorgehen:

for (int index = 1; index <= 6; index ++)
{
ImageButton ib = (ImageButton)findViewById(getResources().getIdentifier("button" + index, "id", getPackageName()));
ib.setImageResource(R.drawable.caro_blau);
}

Bestimmung der Position (Längen- und Breitengrade) und der Geschwindigkeit mittels GPS

Erstellt in Android SDK am 17. Februar 2013 vom Daschmi

Um die Geschwindigkeit in m/s oder die Längen und Breitenangaben des GPS Empfängers eines Android Gerätes zu ermitteln muss man als erstes in der Mainfest Datei der Answendung folgende Berechtigungen hinzufügen:

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />
<uses-permission android:name="android.permission.CONTROL_LOCATION_UPDATES" />
<uses-permission android:name="android.permission.INTERNET" />

Nun kann man mittels folgendem Code einen LocationListener hinzufügen:

myLocationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
myLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, new LocationListener() {
public void onStatusChanged(String provider, int status, Bundle extras) { }
public void onProviderEnabled(String provider) { }
public void onProviderDisabled(String provider) { }

public void onLocationChanged(Location location) {
  System.out.println("Speed: " + location.getSpeed());
  System.out.println("Latitude: " + location.getLatitude());
  System.out.println("Longitude: " + location.getLongitude());
  System.out.println("Bearing: " + location.getBearing());
}
});

Wie man das Ganze auf einem iGerät (iPhone, iPad etc.) macht habe ich hier beschrieben.

Slide Animationen beim Wechseln von Aktivitäten in Android Apps

Erstellt in Android SDK am 16. Februar 2013 vom Daschmi

Um die standardmäßige Fade Animation zwischen zwei Aktivitäten (activities) auszutauschen muss man die Aktivitäten zu erst mittels Animationsbeschreibung in XML definieren.Diese Dateien sollten unter res/anim/ abgelegt werden. Hier nun die vier Animationen die man für einen horizontalen Wechsel der Ansichten benötigt:

Bewegung der Ansicht nach rechts raus (slide_to_right.xml) :

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false">
<translate
android:fromXDelta="0%" android:toXDelta="100%"
android:fromYDelta="0%" android:toYDelta="0%"
android:duration="500"
/>
</set>

Bewegung der Ansicht von rechts rein (slide_from_right.xml) :

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false">
<translate
android:fromXDelta="100%" android:toXDelta="0"
android:fromYDelta="0%" android:toYDelta="0%"
android:duration="500"
/>
</set>

Bewegung der Ansicht nach links raus (slide_to_left.xml) :

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false">
<translate
android:fromXDelta="0%" android:toXDelta="-100%"
android:fromYDelta="0%" android:toYDelta="0%"
android:duration="500"
/>
</set>

Bewegung der Ansicht von links rein (slide_from_left.xml) :

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false">
<translate
android:fromXDelta="-100%" android:toXDelta="0"
android:fromYDelta="0%" android:toYDelta="0%"
android:duration="500"
/>
</set>

Damit die Animation nun beim wechsel zu einer neuen Aktivitätsansicht angezeigt wird kann man die standard Animationen mit folgendem Befehl überschreiben:

public void onClick(View v) {

Intent i = new Intent(getApplicationContext(), SecondActivity.class);
startActivity(i);

overridePendingTransition(R.anim.slide_from_right, R.anim.slide_to_left);

}

In dem Beispiel würde das Fenster nach links herausgeschoben und das neue kommt parallel von rechts herein.

Beim verlassen der zweiten Aktivität muss man nun die Animation so umschreiben dass das Fenster nach rechts rausfliegt und die alte Ansicht von links hereinkommt. Dazu ruft man nach dem finish() Aufruf wieder folgenden Befehl auf:

finish();
overridePendingTransition(R.anim.slide_from_left, R.anim.slide_to_right);

Eine Vertikale Animation kann über entsprechende Werte in den XML Dateien erreicht werden. Über den Wert bei duration kann die Geschwindigkeit der Animation festgelegt werden.