2017-04-11 2 views
0

Je souhaite créer une activité dans laquelle vous pouvez insérer/supprimer/déplacer/connecter des noeuds entre eux et en fonction de ceux-ci pour générer une valeur de chaîne plus tard envoyé par Bluetooth à un autre appareil.Activité Android: Génération d'une valeur de chaîne avec un système de noeud basé sur le flux

Quelque chose comme this

Et la chaîne résultante devrait ressembler à:

`"do[i<0-2>]: 
{case[i]: 
{0:"Hello ",1:"World",2:"!"} 
}" 

Mon problème est que je ne sais pas comment commencer à créer le point de vue où les nœuds seront placés et les nœuds eux-mêmes

Je pense que le « espace de travail » devrait être une simple vue vide où vous pouvez effectuer un panoramique et de zoom avant/arrière

Mais pour les nœuds, je n'ai aucune idée par où commencer parce qu'ils doivent pouvoir avoir plusieurs entrées/sorties ... peut-être que j'ai besoin de créer un veiw/composant personnalisé, mais comme je l'ai dit :(je ne sais pas comment commencer

Merci pour l'aide à l'avance! J'ai décidé d'utiliser Blockly de Google pour générer la chaîne, j'ai personnalisé le bloc de la façon dont j'ai besoin de générer la chaîne, mais je ne peux pas comprendre comment obtenir le "code" généré comme une chaîne pour que je puisse l'utiliser plus tard ... est-ce que quelqu'un a une idée?

+0

Utilisez-vous Blockley pour le Web (dans un WebView) ou Blockley pour Android? – Anm

+0

J'utilise Android – DragonBlade

Répondre

0

Blockly pour Android utilise un CodeGenerationRequest.CodeGeneratorCallback pour renvoyer la chaîne de code à l'application.

Voir cet exemple de la TurtleActivity:

private final CodeGenerationRequest.CodeGeneratorCallback mCodeGeneratorCallback = 
     new CodeGenerationRequest.CodeGeneratorCallback() { 
      @Override 
      public void onFinishCodeGeneration(final String generatedCode) { 
       // Sample callback. 
       Log.i(TAG, "generatedCode:\n" + generatedCode); 
       Toast.makeText(getApplicationContext(), generatedCode, 
         Toast.LENGTH_LONG).show(); 
       mHandler.post(new Runnable() { 
        @Override 
        public void run() { 
         String encoded = "Turtle.execute(" 
           + JavascriptUtil.makeJsString(generatedCode) + ")"; 
         mTurtleWebview.loadUrl("javascript:" + encoded); 
        } 
       }); 
      } 
     };