Version | Anpassungen |
---|---|
1.0 (2020-02-29 | Initiale Version |
2.0 (2020-08-18) | - Umbenannt in UrsAI2Util.. - Methode MoveTaskToBackground hinzugefügt - Methode SimulateHomeKey hinzugefügt. - Event OnDestroy entfernt, das Auslösen von Events ist in Form.onDestroy nicht möglich. |
2.1 (2020-10-27) | Methode FileListFromAssets hinzugefügt. |
2.2 (2020-12-31) | Methoden GetTextWidth, SetX,
SetY, ScreenWidth,
ScreenHeight hinzugefügt. Damit lässt sich ein horizontales Scrollen per Slider umsetzen. |
2.3 (2023-06-15) | Methode SetHypertext hinzugefügt. |
2.4 (2023-08-12) | Log-Funktionen hinzugefügt |
3.0 (2023-12-19 | Methoden SetX und SetY erwarten Angaben
in DIP (vorher in Pixel). Es können sämtliche sichtbaren Komponenten verschoben werden. Methoden getY, getY, SetPadding, GetPaddingLeft, GetPaddingTop, GetPaddingRight, GetPaddingBottom, SetBorder hinzugefügt. Eigenschaften ScreenDensity, ScreenWidthDIP, ScreenHeightDIP hinzugefügt. |
3.1 (2024-03-24) | FinishAndRemoveTask hinzugefügt |
Inhaltsverzeichnis
Ereignisse onPause, onStop, onResume
Funktionen zur Bearbeitung von sichtbaren Komponenten
Hypertext für Label, Button und CheckBox
Das ZIP-Archiv UrsAI2Utils zum Download. Das Archiv enthält den Quellcode, das kompilierte Binary zum Upload in den App Inventor und eine Beispiel-Anwendung.
Die folgende Grafik stellt den Lebenszyklus einer Android Activity dar.
Für manche Anwendungen kann es interessant sein, in welchen Zustand sich die App gerade befindet. Die Extension stellt Ereignisse bereit, die bei einem Zustandswechsel ausgelöst werden. Über das App Inventor Framework sind leider nur vier dieser Wechsel abgreifbar. onCreate ist bereits in der Screen-Komponente als Initilalize implementiert. onPause, onStop, onResume werden durch diese Extension bereit gestellt.
Block | Funktion |
---|---|
Das Initialize-Ereignis wird beim Start des Bildschirms ausgeführt und nur einmal pro Bildschirm ausgeführt. | |
Die App wird (teilweise) verdeckt. Benutzereingaben werden nicht akzeptiert.1) | |
Die App wird in den Hintergrund verlagert. | |
Die App wird sichtbar und akzeptiert Benutzereingaben. |
1) Bei allen meinen Versuchen zu diesen Ereignissen, wurde nach onPause auch stets onStop ausgelöst.
Diese Funktion soll das Debugging erleichtern. Besonders wenn es um Datenaustausch geht kann es interessant sein zu wissen, wie die interne Darstellung eines Srtings ist. Normalerweise ist er UTF-8 kodiert.
Block | Funktion |
---|---|
Der String im Argument Text wird in einen String konvertiert, der die Hexadezimaldarstellung der einzelnen Zeichen enthält. z.B. "abcß" wird zu "61 62 63 C3 9F". |
Mit der MQTT-Extension lassen sich Byte-Arrays übertragen, dies können z.B. auch JPEG-Images sein. Die Methode konvertiert das Empfange Byte-Array in ein Bitmap-Objekt und zeigt es auf einem im App Inventor enthaltenen Komponente Image an. Diese Methode darf nicht mit der Eigenschaft Picture der Komponente verwechselt werden! Picture erwartet den Dateipfad auf eine Image-Datei.
Block | Funktion |
---|---|
JPEG: Byte-Array, dass ein JPEG-Image enthält. ImageBlock: Eine Komponente vom Typ Image, auf der das Bild angezeigt werden soll. Rotation: Rotationswinkel für Bildanzeige. |
Eine typische Verwendung des Blocks könnte so aussehen:
Die Textformatierungsmöglichkeiten im App Inventor beziehen sich immer auf die gesamte Komponente. Z.B. sind Hervorhebungen eines einzelnen Wortes im Standard nicht möglich.
Die Methode SetHypertext erlaubt es, Texte mit HMTL-Tags zu versehen und dadurch den Text individuell zu gestalten. Welche HTML-Tags benutzt werden können, variiert je nach Implementierung des Android-Systems. Hinweise gibt es bei Mark Murphy's Technical Stuff oder Daniel Lew's Coding Thoughts. Das folgende Beispiel zeigt die Anwendung:
Die Texte für Button1, Label1 und CheckBox1 sind
"The <b>quick <i>brown <strike>fox <u>jumps <font
color="red">over</font></u></strike><i></b> the <font face='cursive'>lazy dog</font>"
und für Label2
"Normal<br/>
<font
face='sans-serif'>sans-serif</font><br/>
<font face='sans-serif-thin'>sans-serif-thin</font><br/>
<font
face='sans-serif-light'>sans-serif-light</font><br/>
<font
face='sans-serif-medium'>sans-serif-medium</font><br/>
<font
face='sans-serif-black'>sans-serif-black</font><br/>
<font
face='sans-serif-condensed'>sans-serif-condensed</font><br/>
<font
face='sans-serif-condensed-light'>sans-serif-condensed-light</font><br/>
<font
face='serif'>serif</font><br/>
<font face='monospace'>monospace</font><br/>
<font
face='serif-monospace'>serif-monospace</font><br/>
<font face='casual'>casual</font><br/>
<font
face='cursive'>cursive</font><br/>
<font face='sans-serif-smallcaps'>sans-serif-smallcaps</font>"
Die Android Debug Bridge (adb) erlaubt die Anzeige eines Logs z.B. auf einem angeschlossenen PC. Mit diesen Funktionen kann man in das Android-Log schreiben.
Der Text in einer TextBox wird über einen Slider horizontal verschoben.
Eigentlich sieht es nur so aus. Die Länge des Textes wird ermittelt und die Breite der Textbox auf diesen Wert gesetzt. Sie kann nun den gesamten Text darstellen und ist damit breiter als der einbettende Container (im Bespiel der Screen). Anhand der Slider-Position wird nun die gesamte Textbox verschoben. Dabei sind dann die Textteile die außerhalb des Containers liegen nicht sichtbar. Insgesamt sieht es damit do aus, als ob der Text verschoben würde.
Für die Erstellung eigener Extensions habe ich einige Tipps zusammengestellt: AI2 FAQ: Extensions entwickeln.