Java android中的状态机

Java android中的状态机,java,android,Java,Android,我有一个锻炼的密码 我想按两个圆圈(状态),并用一条线将它们连接起来。按下两个按钮时,会出现一个警报,允许您选择输入和输出 我希望输入和输出都写在路径上(在本例中是使用canvas.drawTextOnPath) 我在以下方面有问题: 警报不会很好地返回“文本” 路径上的文本不带行显示 如果有人能帮我做这个练习(聊天,邮件…),因为我被阻止了。我将非常感激 多谢各位 这是其中一个错误,文本已写入,但行未写入。 导入android.app.Activity; 导入android.app.Al

我有一个锻炼的密码

我想按两个圆圈(状态),并用一条线将它们连接起来。按下两个按钮时,会出现一个警报,允许您选择输入和输出

我希望输入和输出都写在路径上(在本例中是使用canvas.drawTextOnPath)

我在以下方面有问题:

  • 警报不会很好地返回“文本”

  • 路径上的文本不带行显示

如果有人能帮我做这个练习(聊天,邮件…),因为我被阻止了。我将非常感激

多谢各位

这是其中一个错误,文本已写入,但行未写入。

导入android.app.Activity;
导入android.app.AlertDialog;
导入android.content.Context;
导入android.content.DialogInterface;
导入android.graphics.Canvas;
导入android.graphics.Color;
导入android.graphics.Paint;
导入android.graphics.Path;
导入android.graphics.RectF;
导入android.os.Bundle;
导入android.view.Menu;
导入android.view.MotionEvent;
导入android.view.view;
公共类MainActivity扩展了活动{
//合作伙伴和合作伙伴
浮动x=0;
浮动y=0;
浮动x_origen,y_origen,x_destino,y_destino;
//卡达·克鲁中心合作社
浮点数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,
无线电=20,
无线电频率=100;
int contador=0,//contador de las 2 bolas pulsadas
contador_lineas=0,//contador de número de flechas dibujadas
i=0;
字符串accion=“accion”//acción para cuando pulsas un círculo que se coloree en rojo
字符串文本;
int-num;
Path Path=新路径();//Path para crear flechas
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(新的diagrama(this));//creo el layout“diagrama”desde java y no desde xml
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
//为菜单充气;这会将项目添加到操作栏(如果存在)。
getMenuInflater().充气(R.menu.main,menu);
返回true;
}
公共类diagrama扩展视图{
公共diagrama(上下文){
超级(上下文);
}
//梅托多·帕拉迪布贾尔
@凌驾
受保护的void onDraw(画布){
//奶油夹心面包
油漆夹=新油漆();
pincel.setStyle(油漆、样式、笔划);
钳形调整行程宽度(2);
pincel.setColor(颜色:黑色);
//pincel.setColor(颜色:黑色);
//钳形调整行程宽度(2);
//钳形固定式(笔划式);
//卡米诺·德尔奥瓦洛主奶油酒店
最终RectF ovalo_主体=新RectF();
ovalo_主要组件(x_S2-无线电ovalo,
y_S2-radio_ovalo,
x_S2+无线电_ovalo,
y_S2+无线电(ovalo);
//伊兹基尔达咖啡馆
最终RectF ovalo_izquierda=新RectF();
ovalo_izquierda.套装(x_S4-((3*radio_ovalo)/2),
y_S4-((3*radio_ovalo)/2),
x_S4+((3*radio_ovalo)/2),
y_S4+((3*无线电发射)/2));
//德雷查酒店
最终RectF ovalo_derecha=新RectF();
ovalo_derecha.套装(x_S1-((3*radio_ovalo)/2),
y_S1-((3*radio_ovalo)/2),
x_S1+((3*无线电信号)/2),
y_S1+((3*无线电信号)/2));
//奥瓦洛高级德雷查卡米诺奶油酒店
最终RectF ovalo_superior_derecha=新RectF();
ovalo_superior_derecha.套装(x_S1-radio_ovalo,
y_S1-100-radio_ovalo,
x_S1+无线电_ovalo,
y_S1-100+收音机(ovalo);
//奥瓦洛高级伊兹基尔达卡米诺奶油酒店
最终RectF ovalo_superior_izquierda=新RectF();
ovalo_superior_izquierda.套装(x_S4-radio_ovalo,
y_S4-100-无线电,
x_S4+收音机,
y_S4-100+收音机(ovalo);
//奥瓦洛下等伊兹基尔达卡米诺奶油酒店
最终RectF ovalo_SUPER_izquierda=新RectF();
ovalo_subsier_izquierda.套装(x_S4-radio_ovalo,
y_S4+100-无线电,
x_S4+收音机,
y_S4+100+收音机(ovalo);
//奥瓦洛下等德雷查奶油酒店
最终RectF ovalo_subsier_derecha=新RectF();
ovalo_subsier_derecha.set(x_S1-radio_ovalo,
y_S1+100-radio_ovalo,
x_S1+无线电_ovalo,
y_S1+100+收音机(ovalo);
//奥瓦洛佩克诺高级奶油酒店
最终RectF ovalo_pequeño_superior=新RectF();
ovalo_pequeño_superior.套装(x_S0-(radio_ovalo/2)+收音机,
y_S0+50-(无线电台/2)+无线电台,
x_S0+(无线电广播/2)-无线电广播,
y_S0+50+(收音机/2)-收音机;
//奥瓦洛-佩克诺劣质奶油
最终RectF ovalo_pequeño_次方=新RectF();
ovalo_Pequenño_次。套装(x_S0-(收音机ovalo/2),
y_S0+150-(无线电广播/2),
x_S0+(无线电广播/2),
y_S0+150+(无线电广播/2);
//奥瓦洛·佩克诺·德雷查奶油酒店
最终RectF ovalo_pequeño_derecha=新RectF();
ovalo_pequeño_derecha.套装(x_S4+150-(收音机ovalo/2),
y_S4-(收音机ovalo/2),
x_S4+150+(收音机为ovalo/2),
y_S4+(无线电波/2));
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 the menu; this adds items to the action bar if it is 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 a 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;

        }

    }




}