[Monkey] [Android] Menu/Interface

Übersicht Andere Programmiersprachen Allgemein

Neue Antwort erstellen

nX^

Betreff: [Android] Menu/Interface

BeitragDi, Dez 31, 2013 17:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Hat jemand ein gutes Tutorial zu dem Android Interface? Bzw wie erstelle ich wenn ich zb. die Menutaste (Linke Taste neben der Home Taste) drücke ein Benutzermenu (Optionen, Start, Ende usw), welches im unten Bildschirmbereich zu sehen ist?

AnniXa

BeitragFr, Jan 03, 2014 12:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Möchtest du unbedingt die standart android menus und so verwenden? Wenn ja kommst du um das arbeiten mit nativem code nicht herum.

Soweit ich weis ist der menu button bei android "einfach" mit KeyHit(KEY_F1) zu kriegen, und der back button ist auf KEY_ESCAPE gemappt
|moonForge|
Ich bin Pokémon Meisterin seit 1998!

Midimaster

BeitragFr, Jan 03, 2014 16:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Zurück vom User-Menü


Ein Drücken des BACK-Button von Android führt nicht mehr zu einem KeyHit KEY_ESCAPE, sondern löst jetzt eine neue Function OnBack() aus, die einfach in die Game-Class aufgenommen werden kann. Derzeit sieht eine Standard-Monkey-App deshalb so aus:

Code: [AUSKLAPPEN]
Strict
Import mojo

Class Game Extends App

   Method OnCreate%()
      SetUpdateRate 10
      Return 0
   End   

   Method OnUpdate%()
      Return 0
   End   

   Method OnRender%()
      DrawText Millisecs(),30,30
      Return 0
   End   
   
   
   Method OnBack%()
      EndApp()  ' oder eine andere Aktion
      Return 0
   End   
End

Function Main%()
   New Game
   Return 0
End



native Android GUI
User-Menüs erstellt man mit Monkey tatsächlich besser mit den Grafikbefehlen von Monkey und simuliert nur die Android-GUI.

Die Verwendung von Original nativen Android Views is bisher nur bei sehr wenigen Bild-Elementen gelungen. Z.B. verwende ich inzwischen den Original Text-Input von Android.

Beispiel:

BlitzMax: [AUSKLAPPEN]
Strict
Import mojo
Import "MyJava.java"

Extern
Function ShowEditDialog:Void(value:String) = "SystemAndroid.showEditDialog"
Function GetInputString:String()="SystemAndroid.getInputString"
Function InputIsVisible:Bool()="SystemAndroid.inputIsVisible"
Public


Class Game Extends App

Field Input$="", WasVisible%=False

Method OnCreate%()
SetUpdateRate 10
Return 0
End


Method OnUpdate%()
If KeyHit(KEY_ESCAPE) OnBack()
If TouchHit(0)
ShowEditDialog Input
EndIf
If WasVisible=True And InputIsVisible()=False
Input=GetInputString()
ElseIf InputIsVisible()=True
WasVisible=True
EndIf
Return 0
End


Method OnRender%()
Cls
Scale 2,2
DrawText "V 16 " + MilliSecs(),0,0
DrawText "java!" + GetInputString() +"!",0,20
DrawText "monk!" + Input +"!",0,40
Return 0
End


Method OnBack%()
EndApp()
Return 0
End
End

Function Main%()
New Game
Return 0
End



MyJava.java:
Code: [AUSKLAPPEN]
import android.app.AlertDialog;
import android.widget.EditText;
import android.content.DialogInterface;

class SystemAndroid {

   public static AlertDialog.Builder alert;
   public static EditText input;
   public static String inputString = "";
   public static Boolean _InputIsVisible=false;
   
   static void showEditDialog(String value)
    {
               alert = new AlertDialog.Builder(BBAndroidGame._androidGame._activity);
                input = new EditText(BBAndroidGame._androidGame._activity);
            input.setText(value);
            input.setSingleLine();
            input.selectAll();

                 alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int whichButton) {
                                inputString = input.getText().toString();
                                _InputIsVisible=false;
                        }
                });
               alert.setView(input);
               _InputIsVisible=true;
               alert.show();
    }
       
    static String getInputString()
    {
                return inputString;
    }



       
    static Boolean inputIsVisible()
    {
      return _InputIsVisible;
   }

}   


aber wie Du schon siehtst, wird es dann gleich umständlich und kompliziert....
  • Zuletzt bearbeitet von Midimaster am Mo, Jan 06, 2014 15:08, insgesamt 2-mal bearbeitet

nX^

BeitragFr, Jan 03, 2014 20:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke erstmal. Ich dachte mir dass schon, dass es nicht so einfach ohne weiteres gehen wird... Muss ich mir morgen mal genau anschauen, da ich jetzt beim kopieren und schnellem ausprobieren 23 Java Fehler im Log habe ^^

BtbN

BeitragFr, Jan 03, 2014 21:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Davon ab gibt es den Menü button bei geräten seit 3.0 nicht mehr, man sollte also auf keinen fall funktionalität einbauen, die diesen zwingend vorraussetzt.

Midimaster

BeitragSa, Jan 04, 2014 11:27
Antworten mit Zitat
Benutzer-Profile anzeigen
oh sorry.... ich hatt dir versehentlich die MyJava.java aus meinem Experimentier-Order gesendet. Jetzt hab ich Sie oben im Post durch die stabile Version ersetzt.
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe

AnniXa

BeitragSa, Jan 04, 2014 14:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Stimmt, es gibt auch geräte ohne den menu button, also am besten das menu das man darüber erreicht auch über einen anderen weg erreichbar machen.
|moonForge|
Ich bin Pokémon Meisterin seit 1998!

nX^

BeitragMi, Jan 08, 2014 17:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke erstmal... Wie nennt sich dieses Textfeld oder Label bzw ich bezeichne es mal als Infotext? Müsste jeder der Android hat schonmal gesehen haben. Wird für ein paar Sekunden eingeblendet im unteren Bereich des Bildschirmes und ist im Prinzip ein grauer Kasten in dem ein Text steht. Meist nur ein paar Worte. Ich hab gegooglet ohne Ende aber leider nix passendes gefunden wie sich dieses Objekt jetzt schimpft.

Farbfinsternis

BeitragMi, Jan 08, 2014 17:55
Antworten mit Zitat
Benutzer-Profile anzeigen
nX^ hat Folgendes geschrieben:
Danke erstmal... Wie nennt sich dieses Textfeld oder Label bzw ich bezeichne es mal als Infotext? Müsste jeder der Android hat schonmal gesehen haben. Wird für ein paar Sekunden eingeblendet im unteren Bereich des Bildschirmes und ist im Prinzip ein grauer Kasten in dem ein Text steht. Meist nur ein paar Worte. Ich hab gegooglet ohne Ende aber leider nix passendes gefunden wie sich dieses Objekt jetzt schimpft.

Das Ding heißt "Toast".

http://developer.android.com/g...oasts.html

nX^

BeitragMi, Jan 08, 2014 18:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Genau das hab ich gesucht. Danke

EDIT:

Ich bin nicht der Javaspezialist, kann mir da mal bitte jemand weiterhelfen?

Code: [AUSKLAPPEN]
import android.widget.Toast;

class SystemAndroid {
   public static Toast toastbox;
   
   static void ToastBox(String value) {
      toastbox = new Toast.makeText(BBAndroidGame._androidGame._activity, value, Toast.LENGTH_SHORT).show();
   }
}


EDIT2:

Ich habs hinbekommen.

Code: [AUSKLAPPEN]
import android.widget.Toast;

class SystemAndroid {
   
   public static Toast toast;
   
   static void ToastBox(String value) {
      toast = Toast.makeText(BBAndroidGame._androidGame._activity, value, Toast.LENGTH_SHORT);
      toast.show();
      }
}
 

PhillipK

BeitragDi, Jan 14, 2014 11:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

darf ich ganz dreist fragen, ob du vorhast, das ganze als module abzupacken? Smile
Ich hatte selbst mal vor, diverse elemente für Android in monkey einzubauen, damit ich sie "simpler" aus monkeycode verwenden kann.

Allerdings ist das eine recht schwere aufgabe, wenn man nie nativ für android (in java) gearbeitet hat Sad

DAK

BeitragDi, Jan 14, 2014 15:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab kein Monkey, aber wenn wer was in Android/Java braucht, kann ich damit helfen, sagts nur bescheid, was ihr wollt und wie die Schnittstellen ausschauen sollen.
Gewinner der 6. und der 68. BlitzCodeCompo

Neue Antwort erstellen


Übersicht Andere Programmiersprachen Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group