Close Stack open Stack (Android 8.1)

Startseite Foren Deutsches LiveCode-Forum Close Stack open Stack (Android 8.1)

Ansicht von 19 Antwort-Themen
  • Autor
    Beiträge
    • #14023
      albin0
      Teilnehmer

      Huhu,

      kurz zu meiner mini App.

      – Main Stack (Startbildschirm mit Infos und einem Button zu Sub Stack 1)
      – Sub Stack 1 (Bildergalerie mit Vergrößerungsfunktion und Auswahlmöglichkeit einzelner Bilder max 10)
      – Sub Stack 2 (Letzter Screen mit abschließenden Infos und einem Textfeld sowie einem Speichern Button)

      Kurz zur gewünschten Funktion:

      Eine kleiner Bildbetrachter für Kinder, diese sollen ihre zehn Lieblingsbilder auswählen können.
      Nach dem Drücken des ersten Button landet man in der Bildgalerie, in der man max zehn Bilder auswählen kann. Die Dateinamen der ausgewählten Bilder sollen dabei in einer Variable (Array) abgelegt werden. Die Bilder sollen automatisch aus einem Verzeichnis in ein Datagrid geladen werden.
      Im letzten Screen sollen die Kinder ihren Vornamen angeben, dieser wird dann zusammen mit dem Array in eine Textdatei geschrieben.

      Ergebnis in der Datei sollte etwa so aussehen:
      Tom | 2.jpg | 5.jpg | 8.jpg
      Lea | 2.jpg | 8.jpg | 12.jpg | 15.jpg
      Ben | 1.jpg | 9.jpg | 12.jpg | 16.jpg | 20.jpg | 23.jpg

      Soweit die Idee.

      Nun die Fragen:
      Ist das mit Livecode umsetzbar?
      Warum wird der Mainstack unter Windows im Test (1. Button) geschlossen und der Galerie Stack geöffnet, unter Android 8.1 im Livetest aber nicht?

      Hier der Code für den 1. Button auf dem Mainstack:
      on press

      close stack „main“
      open stack „galerie“

      end press

      Vielen Dank vorweg.

      Tobias

    • #14025
      Klaus Major
      Verwalter

      Hallo Tobias,
      1.

      on press
        close stack "main"
        open stack "galerie"
      end press

      Du meinst sicher „on mouseup“, oder?
      Auf der mobilen Platform kann immer nur EIN Stack zur selben Zeit angezeigt werden, daher siehst Du eigentlich nicht, daß natürlich der Befehl „close stack xyz“ den Stack auch wirklich schliesst!

      2. Ja, klingt alles durchaus machbar in LC.
      Allerdings benötigst Du nicht wirklich Substacks hierfür.
      Ein paar weitere Karten im Mainstack reichen sicher aus.
      Der user bemerkt das sowieso nciht.

      Gruß

      Klaus

    • #14026
      Klaus Major
      Verwalter

      P.S.
      Um unter Windows das selbe „Benutzererlebnis“ wie unter Android zu haben,
      lass die Zeile:

      close stack „main“

      einfach weg. 🙂

    • #14027
      albin0
      Teilnehmer

      Hallo Klaus,

      herzlichen Dank für die prompte Begrüßung und die schnelle Antwort.

      Du meinst sicher „on mouseup“, oder?

      Absolut… Danke dir 🙂

      Ich bin halt neu, aber ich lerne schnell.

      So, die Navigation funzt jetzt und ich habe gelernt den Projektmanager zu verstehen.

      Vielen Dank und vermutlich bis morgen.

      Grüße Tobias

    • #14033
      albin0
      Teilnehmer

      Guten Morgen Zusammen,

      und wieder hänge ich aufgrund der fehlenden Erfahrung mit LC.

      Ich möchte jetzt bei gedrücktem BTN, dass der Inhalt eines Verzeichnisses (In diesem Fall 10 Bilder) in einer Tabelle oder einem Grid angezeigt wird.

      Ich habe zu diesem Thema ein Bsp von Klaus gefunden, leider komme ich hier nicht wirklich weiter.

      Ich kann mir jetzt schon mal das Verzeichnis auswählen welches ich auslesen möchte.
      Mit put Folder zeigt er mir auch den Pfad via Message Box an und mit put File listet er die Bilder auf.

      on mouseUp
         open card "galerie"
         set the defaultfolder to "C:/Users/JessiLi/Desktop/Kinder/Bilder/groß"
         #put defaultfolder
         put the Files
      end mouseUp

      Wie geht man nun am besten vor wenn man alle Bilder formatiert in einem grid anzeigen lassen möchte?

      Außerdem habe ich versucht mit einer der IF von Klaus beide Pfade abzufangen, funktioniert bei mir leider nur mit dem Windows Pfad, im Livetest mit Android 8.1 bleibt der Pfad leer.

      if 
         the environment = "mobile" then   (Das scheint nicht zu funktionieren)
         mobilePickPhoto "library"
      else
         
         ## User darf ein JPG oder PNG auswählen:
         answer file "Bitte ein Bild auswählen:" with type "Jpeg,PNG|jpg,png|"
         put it into tFile

      Bräuchte da mal noch nen Denkanstoß, bitte bitte…

      Gruß Tobias

    • #14034
      Klaus Major
      Verwalter

      Moin Tobias,

      keine Bange, das wird schon! 🙂
      LC ist sehr sehr mächtig, kommt allerdings mit einer entprechenden Lernkurve daher.

      Hier ein paar Tips:

      on mouseUp
         ## open card "galerie"
         ## Offizielle Syntax für Cards***:
         go cd "galerie"
         ## set the defaultfolder to "C:/Users/JessiLi/Desktop/Kinder/Bilder/groß"
         ## put defaultfolder
      
         ## seit Version 8 gibt es eine neue Syntax, eine Funktion, 
         ## so daß man sich nicht mehr THE DEFAULTFOLDER setzen muss:
         put files("C:/Users/JessiLi/Desktop/Kinder/Bilder/groß")
         ## put the Files
      end mouseUp

      ***Ich mag etwas penibel erscheinen, wenn ich immer auf die „offizielle“ Syntax poche, aber ich habe festgestellt, daß LC mit jeder Version auch pingeliger wird, was „saloppe“ Syntax angeht. Also warum das Schicksal herausfordern? Ist jedenfalls meine Devise 🙂

      Hier bist Du auf dem richtigen Weg, aber es fehlt noch was:

      ...
      ## EINE Zeile!
      if the environment = "mobile" then
      
         ## Du solltest unbedingt noch weitere Parameter angeben, nämlich wie groß
         ## dieses Bild maximal auf der Karte erscheinen soll.
         ## Ohne das verdeckt das Bild den ganzen Stack und jeder wundert sich :-)
         mobilePickPhoto "library",300,300
         ## Nun wird es maximal 300 Pixel breit oder hoch, 
         ## wobei das Seitenverhältnis bebehalten wird
      
         ## Wenn der User ein bild gewählt hat, erstellt LC ein KOPIE
         ## dieses Bildes als neues IMAGE Objekt auf der Karte!
         ## Du kannst darauf zugreifen mit -> last image
         ## Beispiel:
         set the name of last image to "das userbild"
      else
         
         ## User darf ein JPG oder PNG auswählen:
         answer file "Bitte ein Bild auswählen:" with type "Jpeg,PNG|jpg,png|"
         put it into tFile
         ## Auf dem Desktop bekommst Du so erst einmal nur den Dateinamen.
      ...

      Falls Du des Englischen halbwegs mächtig bist, empfehle ich Dir diese Stacks,
      um die Basics von LC zu verstehen:
      http://www.hyperactivesw.com/revscriptconf/scriptingconferences.html
      Die sind schon etwas älter, aber immer noch up-to-date.
      Nur Widgets wirst Du darin daher nicht finden.

      Gruß

      Klaus

    • #14035
      Klaus Major
      Verwalter

      Hinweis:
      Es ist eine gute Idee, für eine neue Frage einen neuen Thread zu eröffnen.
      Ansonten endet das in einem Thread mit > 50 Postings (hatten wir hier auch schon),
      den niemand mehr durchliest und das ist wenig hilfreich für andere User mit
      ähnlichen Problemen.

    • #14036
      albin0
      Teilnehmer

      Hallo Klaus,

      du scheinst ja immer online zu sein. 🙂

      Vielen Dank für deine Mühe vorweg.

      Falls Du des Englischen halbwegs mächtig bist, empfehle ich Dir diese Stacks,
      um die Basics von LC zu verstehen:

      Berlitz B2 ist schon ne Weile her, aber ich schau es mir gerne an.

      Ich versuche mal mit deinen Tipps weiter zukommen. Ich habe halt leider aktuell nicht die Zeit eine langsame Lernkurve zu durchfahren, daher ja auch die Einfachheit der App.

      Was die Thread-Erstellung angeht, gebe ich mir zukünftig Mühe.

      Merci

      Tobias

    • #14037
      Klaus Major
      Verwalter

      Hi Tobias,

      tja, ich bin seit langer Zeit arbeitslos und habe daher mehr Zeit als Geld.
      Also immer schön fragen, ich habe eine Menge Antworten! 🙂

      Auf meiner Website kannst Du gucken, was ich schon alles mit LC und seinen Vorfahren (MetaCard, Runtime Revolution, Revolution) programmiert habe: https://major-k.de
      Den oberen Link klicken, der untere führt zu meiner Musikersite.

      Gruß

      Klaus

    • #14038
      albin0
      Teilnehmer

      Dear Klaus, 😉

      ich bin auch arbeitslos und selbstständiger Fotograf im Nebenberuf, klasse das du so ehrlich bist.

      Aktuell möchte ich einfach nur eine kleine offline App bauen, wo die Kinder sozusagen die besten Bilder für ein Kita Portfolio aussuchen können. Da ist nichts mit Bezahlerei oder E-Mail oder so. Einfach nur ne offline Gallerie im Kiosk Mode aufm Tablet. Ergebnis ist dann eben ein txt file (Kind mag das, kind2 mag das etc…)

      Und ich habe eine Menge Fragen.

      Aktuell funktioniert mobilePickPhoto "library",300,300

      überhaupt nicht und ich kann mir nicht erklären woran das liegt…

      Auf dem Desk klappt das mit der Auswahl wunderbar, nur im Livetest geht dieser Befehl nicht. Andere Kommandos funktionieren. Ich bekomme aber partout keine Bilder aus der Handygalerie geladen.

      Uff…

      Grüße Tobias

    • #14039
      Klaus Major
      Verwalter

      Oh, pardon, mein Fehler, der Parameter für die maximale Breite/Höhe funktioniert nur unter iOS!

      Ich besitze selber weder Handy, Tablet oder ähnliche Devices, noch entwickle ich für die mobile Platform. Daher kann ich sowas alles nur theoretisch beantworten und nicht selber testen.

    • #14040
      albin0
      Teilnehmer

      Kein Problem,

      wäre ich selber erst in 12 1/2 Wochen drauf gekommen.

      Ist die Angabe des Seitenverhältnisses, bei „mobilePickPhoto“ zwingend nötig oder kann ich sie einfach weglassen?

      Und wie kann ich alle Bilder der Galerie in ein grid laden?

      Fragen über Fragen…

      Wenn ich nerve, einfach sagen, dann müssen wir uns anders einigen 😀

      Grüße Tobias

    • #14041
      Klaus Major
      Verwalter

      Zur Not IMMER im Dictionary nachschlagen, daher beziehe ich auch meine Informationen.
      Was heisst „zur Not“? Bitte IMMER dort nachlesen für weitere Infos. 😀

      LC sorgt beim „Import“ über mobilepickphoto selber für die Einhaltung des korrekten Seitenverhältnisses.

      Datagrid
      Tja, das ist leider das komplexeste Objekt in LC „wo gibt“! :-/
      Ich würde ein paar Tage brauchen, um Dir das hier nur grob zu erklären, am besten, Du lädst Dir die Datagrid Docs als PF hier herunter: http://lessons.livecode.com/spaces/lessons/manuals/datagrid
      Linke Seite unter „Topics“ „Api and Properties“ in 5 Punkt Schrift -> Download manual PDF.
      Dann ungefähr 10 mal durchlesen und dann noch ein paar Mal. Dann die Beispiele darin nachbauen.

      Falls es Dich tröstet, ich muss da auch jedes Mal nachlesen, wenn ich wieder mit Datagrids arbeite.

    • #14042
      albin0
      Teilnehmer

      Huhu Klaus,

      evtl schieße ich auch ein wenig über das Ziel hinaus. Im Grunde brauche ich die Bilder ja gar nicht in ein Grid, Tabelle o.ä. laden.

      Ich nutze ja mit dem Befehl schon den native photo picker von Android, sofern er funktioniert.

      Aber wie bereits gesagt, der Befehl läuft bei mir ins Leere. Die apk hat die nötigen Rechte auf den Speicher und auch die Version 8.1 ist korrekt. Ausserdem sind SDK und Java ordentlich eingerichtet.

      Wie es aussieht kann ich atm mit dem Befehl unter Android 8.1 nichts reißen.

      Schade, ich recherchiere mal weiter.

      Lieben Dank

      Tobias

    • #14043
      Klaus Major
      Verwalter

      Ich hatte die Erklärung oben schon geliefert, aber offenbar nicht deutlich genug:

      ...
      ## Das hier:
      mobilePickPhoto "library",300,300
      ...

      funktioniert NUR auf einem iPhone oder iPad!

      Für Android Devices musst Du auf die Parameter verzichten, damit der Befehl funktioniert:

      ...
      mobilePickPhoto "library"
      ...
    • #14044
      albin0
      Teilnehmer

      Jupp,

      habe ich. Funktionierte bis eben dennoch nicht.

      Ich habe jetzt mal einen neuen Stack gemacht mit Oreo 8.0 und schwupp jetzt geht es.

      Danke dir.

    • #14045
      albin0
      Teilnehmer

      So, um das nochmal aufzuklären, es lag doch an den gesetzten Berechtigungen in den „Standalone Applikation Settings“ und nicht an der Android Version.

      Ich habe jetzt mal alle radio buttons sowie haken bei App Berechtigungen gesetzt und nun funktioniert es auch unter Android 8.1.

    • #14046
      Klaus Major
      Verwalter

      SAUBER! 🙂

    • #14047
      albin0
      Teilnehmer

      Jo, vielen Dank nochmal.

      Zum nächsten Punkt mach ich dann einen neuen Thread auf.

      Grüßle Tobias

    • #14048
      Klaus Major
      Verwalter

      Wie sagt der Ami so schön: You are welcome! 🙂

Ansicht von 19 Antwort-Themen
  • Du musst angemeldet sein, um auf dieses Thema antworten zu können.