java - state machine in android -


i have code excercise.

i want press 2 circles (states), , link them line. when both pressed, appears alert allows choose input , output.

i want input , output written on path, (in case canvas.drawtextonpath).

i have problems with:

  • the alert not returns "text" well

  • the text on path appears without line!

if can helps me excercise (chat, mail...), because i'm blocked this. appreciate lot.

thank you

this 1 of errors,the text written line not. enter image description here

import android.app.activity; import android.app.alertdialog; import android.content.context; import android.content.dialoginterface; import android.graphics.canvas; import android.graphics.color; import android.graphics.paint; import android.graphics.path; import android.graphics.rectf; import android.os.bundle; import android.view.menu; import android.view.motionevent; import android.view.view;  public class mainactivity extends activity{      //coordenadas x y en el momento en el que tocas la pantalla     float x=0;     float y=0;     float x_origen,y_origen,x_destino,y_destino;      //coordenadas de los centros de cada círculo     float   x_s0=160, y_s0=100,              x_s1=260, y_s1=200,             x_s2=160, y_s2=200,             x_s3=160, y_s3=300,             x_s4=60,  y_s4=200,              radio=20,             radio_ovalo=100;      int contador=0, //contador de las 2 bolas pulsadas             contador_lineas=0, //contador de número de flechas dibujadas             i=0;      string accion="accion"; //acción para cuando pulsas un círculo que se coloree en rojo     string text;     int num;     path path= new path(); //path para crear flechas       @override     protected void oncreate(bundle savedinstancestate) {         super.oncreate(savedinstancestate);         setcontentview(new diagrama(this)); //creo el layout "diagrama" desde java y no desde xml     }       @override     public boolean oncreateoptionsmenu(menu menu) {         // inflate menu; adds items action bar if present.         getmenuinflater().inflate(r.menu.main, menu);         return true;     }      public class diagrama extends view{          public diagrama (context context) {             super(context);         }          //método para dibujar         @override         protected void ondraw(canvas canvas){              //creamos el pincel con el que vamos dibujar             paint pincel = new paint();             pincel.setstyle(paint.style.stroke);             pincel.setstrokewidth(2);             pincel.setcolor(color.black); //          pincel.setcolor(color.black); //          pincel.setstrokewidth(2); //          pincel.setstyle(style.stroke);              //creamos el camino del ovalo principal             final rectf ovalo_principal = new rectf();             ovalo_principal.set(x_s2-radio_ovalo,                      y_s2-radio_ovalo,                      x_s2+radio_ovalo,                      y_s2+radio_ovalo);              //creamos el camino del ovalo de la izquierda             final rectf ovalo_izquierda = new rectf();             ovalo_izquierda.set(x_s4-((3*radio_ovalo)/2),                      y_s4-((3*radio_ovalo)/2),                      x_s4+((3*radio_ovalo)/2),                      y_s4+((3*radio_ovalo)/2));              //creamos el camino del ovalo de la derecha             final rectf ovalo_derecha = new rectf();             ovalo_derecha.set(x_s1-((3*radio_ovalo)/2),                      y_s1-((3*radio_ovalo)/2),                      x_s1+((3*radio_ovalo)/2),                      y_s1+((3*radio_ovalo)/2));              //creamos el camino del ovalo superior derecha             final rectf ovalo_superior_derecha = new rectf();             ovalo_superior_derecha.set(x_s1-radio_ovalo,                      y_s1-100-radio_ovalo,                      x_s1+radio_ovalo,                      y_s1-100+radio_ovalo);              //creamos el camino del ovalo superior izquierda             final rectf ovalo_superior_izquierda = new rectf();             ovalo_superior_izquierda.set(x_s4-radio_ovalo,                      y_s4-100-radio_ovalo,                      x_s4+radio_ovalo,                      y_s4-100+radio_ovalo);              //creamos el camino del ovalo inferior izquierda             final rectf ovalo_inferior_izquierda = new rectf();             ovalo_inferior_izquierda.set(x_s4-radio_ovalo,                      y_s4+100-radio_ovalo,                      x_s4+radio_ovalo,                      y_s4+100+radio_ovalo);              //creamos el camino del ovalo inferior derecha             final rectf ovalo_inferior_derecha = new rectf();             ovalo_inferior_derecha.set(x_s1-radio_ovalo,                      y_s1+100-radio_ovalo,                      x_s1+radio_ovalo,                      y_s1+100+radio_ovalo);              //creamos el camino del ovalo pequeño superior             final rectf ovalo_pequeño_superior = new rectf();             ovalo_pequeño_superior.set(x_s0-(radio_ovalo/2)+radio,                      y_s0+50-(radio_ovalo/2)+radio,                      x_s0+(radio_ovalo/2)-radio,                      y_s0+50+(radio_ovalo/2)-radio);              //creamos el camino del ovalo pequeño inferior             final rectf ovalo_pequeño_inferior = new rectf();             ovalo_pequeño_inferior.set(x_s0-(radio_ovalo/2),                      y_s0+150-(radio_ovalo/2),                      x_s0+(radio_ovalo/2),                      y_s0+150+(radio_ovalo/2));              //creamos el camino del ovalo pequeño derecha             final rectf ovalo_pequeño_derecha = new rectf();             ovalo_pequeño_derecha.set(x_s4+150-(radio_ovalo/2),                      y_s4-(radio_ovalo/2),                      x_s4+150+(radio_ovalo/2),                      y_s4+(radio_ovalo/2));              //creamos el camino del ovalo pequeño derecha             final rectf ovalo_pequeño_izquierda = new rectf();             ovalo_pequeño_izquierda.set(x_s4+50-(radio_ovalo/2),                      y_s4-(radio_ovalo/2),                      x_s4+50+(radio_ovalo/2),                      y_s4+(radio_ovalo/2));              //creamos el camino del ovalo inferior             final rectf ovalo_inferior = new rectf();             ovalo_inferior.set(x_s3-((float) math.sqrt((radio_ovalo*radio_ovalo)+(radio_ovalo*radio_ovalo))),                      y_s3-((float)math.sqrt((radio_ovalo*radio_ovalo)+(radio_ovalo*radio_ovalo))),                      x_s3+((float)math.sqrt((radio_ovalo*radio_ovalo)+(radio_ovalo*radio_ovalo))),                      y_s3+((float)math.sqrt((radio_ovalo*radio_ovalo)+(radio_ovalo*radio_ovalo))));              //creamos el camino del ovalo superior             final rectf ovalo_superior = new rectf();             ovalo_superior.set(x_s0-((float) math.sqrt((radio_ovalo*radio_ovalo)+(radio_ovalo*radio_ovalo))),                      y_s0-((float)math.sqrt((radio_ovalo*radio_ovalo)+(radio_ovalo*radio_ovalo))),                      x_s0+((float)math.sqrt((radio_ovalo*radio_ovalo)+(radio_ovalo*radio_ovalo))),                      y_s0+((float)math.sqrt((radio_ovalo*radio_ovalo)+(radio_ovalo*radio_ovalo))));              //dibujamos círculos y letras             canvas.drawcircle(x_s0, y_s0, radio, pincel);             canvas.drawtext("s0",x_s0-5,y_s0+5, pincel);              canvas.drawcircle(x_s1, y_s1, radio, pincel);             canvas.drawtext("s1",x_s1-5,y_s1+5, pincel);              canvas.drawcircle(x_s2, y_s2, radio, pincel);             canvas.drawtext("s2",x_s2-5,y_s2+5, pincel);              canvas.drawcircle(x_s3, y_s3, radio, pincel);             canvas.drawtext("s3",x_s3-5,y_s3+5, pincel);              canvas.drawcircle(x_s4, y_s4, radio, pincel);             canvas.drawtext("s4",x_s4-5,y_s4+5, pincel);              //si se pulsa un círculo, lo pintamos de rojo como si estuviera seleccionado             if (accion=="s0"){                  pincel.setcolor(color.red);                 canvas.drawtext("s0",x_s0-5,y_s0+5, pincel);                 pincel.setcolor(color.black);             }              if (accion=="s1"){                  pincel.setcolor(color.red);                 canvas.drawtext("s1",x_s1-5,y_s1+5, pincel);                 pincel.setcolor(color.black);             }              if (accion=="s2"){                  pincel.setcolor(color.red);                 canvas.drawtext("s2",x_s2-5,y_s2+5, pincel);                 pincel.setcolor(color.black);             }              if (accion=="s3"){                  pincel.setcolor(color.red);                 canvas.drawtext("s3",x_s3-5,y_s3+5, pincel);                 pincel.setcolor(color.black);             }              if (accion=="s4"){                  pincel.setcolor(color.red);                 canvas.drawtext("s4",x_s4-5,y_s4+5, pincel);                 pincel.setcolor(color.black);             }               //para el segundo círculo pulsado             if (contador==2){                  final charsequence[] items = {"0 / 0", "0 / 1", "1 / 0", "1 / 1"};                 alertdialog.builder builder = new alertdialog.builder(mainactivity.this);                 builder.settitle("indica combinación de entrada/salida");                  builder.setsinglechoiceitems(items, -1, new dialoginterface.onclicklistener() {                     public void onclick(dialoginterface dialog, int item) {                          if (item==1){                             text="0 / 0";                             dialog.cancel();                         }                          if (item==2){                             text="0 / 1";                             dialog.cancel();                         }                          if (item==3){                             text="1 / 0";                             dialog.cancel();                         }                          if (item==4){                             text="1 / 1";                             dialog.cancel();                         }                     }                  });                  alertdialog alert = builder.create();                 alert.show();                  //vemos cuál es el segundo círculo pulsado                 if ((x>=x_s0-radio && x<=x_s0+radio) && (y>=y_s0-radio && y<=y_s0+radio)){ //s0                      x_destino=x_s0; //guardamos las coordenadas del segundo círculo pulsado como destino                     y_destino=y_s0;                       if (x_origen==260 && y_origen==200){ //s1                          path.arcto(ovalo_principal,-12,-66 ,false);                         //                      canvas.drawpath(path, pincel);                          canvas.drawtextonpath(text, path, 50, 20, pincel);                      }                      if (x_origen==60 && y_origen==200){ //s4                          path.arcto(ovalo_principal,192,66 ,false);                         //                      canvas.drawpath(path, pincel);                         canvas.drawtextonpath(text, path, 50, 20, pincel);                     }                      if (x_origen==160 && y_origen==200){//s2                          path.arcto(ovalo_pequeño_superior,80,-160 ,true);                         //                      canvas.drawpath(path, pincel);                         canvas.drawtextonpath(text, path, 50, 20, pincel);                     }                      if (x_origen==160 && y_origen==300){//s3                          path.arcto(ovalo_izquierda,38,-76 ,true);                         //                      canvas.drawpath(path, pincel);                         canvas.drawtextonpath(text, path, 50, 20, pincel);                     }                     //                  }                     contador=0;                   }                  if ((x>=x_s1-radio && x<=x_s1+radio) && (y>=y_s1-radio && y<=y_s1+radio)){//s1                       x_destino=x_s1;                     y_destino=y_s1;                       if (x_origen==160 && y_origen==100){ //s0                          path.arcto(ovalo_superior_derecha,102,66,true);                         //                      canvas.drawpath(path, pincel);                         canvas.drawtextonpath(text, path, 50, 20, pincel);                     }                      if (x_origen==60 && y_origen==200){ //s4                          path.arcto(ovalo_superior,127,-74,true);                         //                      canvas.drawpath(path, pincel);                         canvas.drawtextonpath(text, path, 50, 20, pincel);                     }                      if (x_origen==160 && y_origen==200){//s2                          path.arcto(ovalo_pequeño_derecha,12,166 ,true);                         //                      canvas.drawpath(path, pincel);                         canvas.drawtextonpath(text, path, 50, 20, pincel);                     }                      if (x_origen==160 && y_origen==300){//s3                          path.arcto(ovalo_principal,12,66 ,true);                         //                      canvas.drawpath(path, pincel);                         canvas.drawtextonpath(text, path, 50, 20, pincel);                     }                     //                  }                     contador=0;                 }                  if ((x>=x_s2-radio && x<=x_s2+radio) && (y>=y_s2-radio && y<=y_s2+radio)){//s2                       x_destino=x_s2;                     y_destino=y_s2;                       if (x_origen==160 && y_origen==100){ //s0                          path.arcto(ovalo_pequeño_superior,102,156,true);                         canvas.drawpath(path, pincel);                         //                          canvas.drawtextonpath(text, path, 50, 20, pincel);                     }                      if (x_origen==60 && y_origen==200){ //s4                          path.arcto(ovalo_pequeño_izquierda,12,166,true);                         canvas.drawpath(path, pincel);                         //                          canvas.drawtextonpath(text, path, 50, 20, pincel);                     }                      if (x_origen==260 && y_origen==200){//s1                          path.arcto(ovalo_pequeño_derecha,-12,-166,true);                         canvas.drawpath(path, pincel);                         //                          canvas.drawtextonpath(text, path, 50, 20, pincel);                     }                      if (x_origen==160 && y_origen==300){//s3                          path.arcto(ovalo_pequeño_inferior,102,156,true);                         canvas.drawpath(path, pincel);                         //                          canvas.drawtextonpath(text, path, 50, 20, pincel);                     }                      //                  }                     contador=0;                 }                  if ((x>=x_s3-radio && x<=x_s3+radio) && (y>=y_s3-radio && y<=y_s3+radio)){//s3                       x_destino=x_s3;                     y_destino=y_s3;                      if (x_origen==160 && y_origen==100){ //s0                          path.arcto(ovalo_derecha,142,76,true);                         canvas.drawpath(path, pincel);                         //                          canvas.drawtextonpath(text, path, 50, 20, pincel);                     }                      if (x_origen==60 && y_origen==200){ //s4                          path.arcto(ovalo_principal,102,76,true);                         canvas.drawpath(path, pincel);                         //                          canvas.drawtextonpath(text, path, 50, 20, pincel);                     }                      if (x_origen==260 && y_origen==200){//s1                          path.arcto(ovalo_inferior_derecha,192,66,true);                         canvas.drawpath(path, pincel);                         //                          canvas.drawtextonpath(text, path, 50, 20, pincel);                     }                      if (x_origen==160 && y_origen==200){//s2                          path.arcto(ovalo_pequeño_inferior,78,-156,true);                         canvas.drawpath(path, pincel);                         //                          canvas.drawtextonpath(text, path, 50, 20, pincel);                     }                     //                  }                     contador=0;                 }                   if ((x>=x_s4-radio && x<=x_s4+radio) && (y>=y_s4-radio && y<=y_s4+radio)){//s4                       x_destino=x_s4;                     y_destino=y_s4;                       if (x_origen==160 && y_origen==100){ //s0                          path.arcto(ovalo_superior_izquierda,12,66,true);                         canvas.drawpath(path, pincel);                         //                          canvas.drawtextonpath(text, path, 50, 20, pincel);                     }                      if (x_origen==160 && y_origen==300){ //s3                          path.arcto(ovalo_inferior_izquierda,-12,-66,true);                         canvas.drawpath(path, pincel);                         //                          canvas.drawtextonpath(text, path, 50, 20, pincel);                     }                      if (x_origen==260 && y_origen==200){//s1                          path.arcto(ovalo_inferior,233,74,true);                         canvas.drawpath(path, pincel);                         //                          canvas.drawtextonpath(text, path, 50, 20, pincel);                     }                      if (x_origen==160 && y_origen==200){//s2                          path.arcto(ovalo_pequeño_izquierda,192,156,true);                         canvas.drawpath(path, pincel);                         //                          canvas.drawtextonpath(text, path, 50, 20, pincel);                     }                      //                  }                     contador=0;                 }             }          }          //método que escucha si pulsamos la pantalla          public boolean ontouchevent(motionevent e){              //obtenemos coordenadas de donde pulsamos             x=e.getx();             y=e.gety();              //si pulsamos cualquiera de los círculos              if ((x>=x_s0-radio && x<=x_s0+radio) && (y>=y_s0-radio && y<=y_s0+radio)){ //s0                  if (e.getaction()==motionevent.action_down){                     accion="s0"; //señal para colorear de rojo el circulo                 }                  if (e.getaction()==motionevent.action_up){                     contador=contador+1; //contador de que hemos pulsado el primer círculo                     if (contador==1){ //si pulsamos el primer círculo, guardamos las coordenadas de ese círculo como origen                         x_origen=x_s0;                         y_origen=y_s0;                     }                 }             }              if ((x>=x_s1-radio && x<=x_s1+radio) && (y>=y_s1-radio && y<=y_s1+radio)){//s1                  if (e.getaction()==motionevent.action_down){                     accion="s1";                 }                  if (e.getaction()==motionevent.action_up){                     contador=contador+1;                     if (contador==1){                         x_origen=x_s1;                         y_origen=y_s1;                     }                 }             }              if ((x>=x_s2-radio && x<=x_s2+radio) && (y>=y_s2-radio && y<=y_s2+radio)){//s2                  if (e.getaction()==motionevent.action_down){                     accion="s2";                 }                  if (e.getaction()==motionevent.action_up){                     contador=contador+1;                     if (contador==1){                         x_origen=x_s2;                         y_origen=y_s2;                     }                 }             }              if ((x>=x_s3-radio && x<=x_s3+radio) && (y>=y_s3-radio && y<=y_s3+radio)){//s3                  if (e.getaction()==motionevent.action_down){                     accion="s3";                 }                  if (e.getaction()==motionevent.action_up){                     contador=contador+1;                     if (contador==1){                         x_origen=x_s3;                         y_origen=y_s3;                     }                 }             }              if ((x>=x_s4-radio && x<=x_s4+radio) && (y>=y_s4-radio && y<=y_s4+radio)){//s4                  if (e.getaction()==motionevent.action_down){                     accion="s4";                 }                  if (e.getaction()==motionevent.action_up){                     contador=contador+1;                     if (contador==1){                         x_origen=x_s4;                         y_origen=y_s4;                     }                 }             }              invalidate();              return true;          }      }     } 


Comments

Popular posts from this blog

image - ClassNotFoundException when add a prebuilt apk into system.img in android -

I need to import mysql 5.1 to 5.5? -

Java, Hibernate, MySQL - store UTC date-time -