Die Elemente, die in der UrsAI2SideBar-Extension dargestellt werden konnten, waren auf die in der Extension programmierten eingeschränkt. Dies ist eine andere Art, eine SideBar zu gestalten. Basis ist ein Layout (ein Arrangement), mit dem die Bildschirmanzeige überlagert wird. Damit kann man alles, was auf einem Arrangement platziert werden kann, auch in der Sidebar verwendet werden. Auch die Ansteuerung wird einfacher.
Version | Anpassungen |
---|---|
1.0 (2023-12-16) | Initiale Version |
Inhaltsverzeichnis
Das ZIP-Archiv UrsAI2SideBar2 zum Download. Das Archiv enthält den Quellcode, das kompilierte Binary zum Upload in den App Inventor und eine Beispiel-Anwendung.
Zunächst muss ein Arrangement mit den Komponenten angelegt, die in der SideBar angezeigt werden soll. Sinnvoller Weise verwendet man ein VerticalScrollArrangement. Das Arrangement wird über die Funktion Layout bei der Extension registriert. Das geschieht am besten im Screen.Initialize-Ereignis.
Es ist durchaus möglich im Verlauf der Anwendung mit dieser Funktion ein anderes Arrangement als SideBar-Inhalt festzulegen.
Hinweis: Die genaue Berechnung der Höhe bei Benutzung eines VerticalScrollArrangement ist nicht immer exakt. Es empfiehlt am unteren Rand ein kleines inhaltloses Element (z.B. HorizontalArrangement) mit fester Höhe einzufügen.
Bereits während der Anlage der (Konstruktor) legt die Extensionen einen zusätzlichen, schmalen, transparenten View über den linken Rand des Displays. Über diesen Streifen wird das Wischen vom linken Rand des Displays nach rechts zum Öffnen der SideBar detektiert. Die Breite des Streifens kann über die Eigenschaft SwipeDetectorWidth eingestellt werden.
Nach dem Öffnen der SideBar, wird das gesamte Display von der SideBar überdeckt (gelb). Die SideBar ist in zwei Bereiche aufgeteilt. Links Arrangement (grün) für die sichtbaren Elemente der SideBar und rechts ein halbtransparentes Feld (violett), das den Rest des Displays abdeckt.
Beim Öffnen und Schließen wird das Arrangement von links nach rechts in den Bildschirm hineingefahren. Gleichzeitig verdunkelt das Schattenfeld den Rest des Bildschirms. Die Farbe des Schattenfeldes kann über die Eigenschaft ShadowColor eingestellt werden. Die Eigenschaft ShadowAlpha legt die Transparenz des Schattenfeldes fest. 0.0 für vollkommen transparent und 1.0 für vollkommen deckend.
Die SideBar kann auf zwei Arten geöffnet werden, entweder per Programm durch die Funktion Show oder der Anwender wischt vom linken Rand des Displays aus nach rechts. Das Öffnen per Wischen kann über die Eigenschaft Enabled unterbinden werden.
Das Schließen erfolgt durch Aufruf der Funktion Hide. Der Anwender schließt die SideBar indem er auf das Schattenfeld (siehe SideBar-Struktur) tippt oder auf der SideBar von rechts nach links wischt. Das BackPressed-Ereignis kann von der Extension nicht abgefangen werden. Hier muss ein entsprechender Programm-Block eingebunden werden.
Das Schließen der Sidebar per Wischen oder durch Antippen des Schattenfelds kann über die Eigenschaft PreventFromClosing unterbunden werden.
Die Ereignisse BeforeOpening AfterOpening, BeforeClosing und AfterClosing begleiten diese Vorgänge. BeforeOpening kann z.B. dazu genutzt werden, die SideBar anzupassen. BeforeClosing ermöglicht z.B. eine Überprüfung der Inhalte.
Ob die SideBar aktuell geöffnet ist, kann über die Eigenschaft IsOpened abgefragt werden.
Hinweis: Die Eigenschaften und Funktionen wirken sich nicht auf eine bereits geöffnete SideBar aus!
Das Beispiel ist nicht besonders anspruchsvoll. Es ermöglicht den Wechsel zwischen zwei Varianten der SideBar. Außerdem wird gezeigt, Wie man das Ereignis BeforeClosing für eine Überprüfung der Eingaben verwenden kann. |
Für die Erstellung eigener Extensions habe ich einige Tipps zusammengestellt: AI2 FAQ: Extensions entwickeln. Auf der Seite findet man noch weitere Hinweise.