Android - AYUDA ANDROID ONTOUCH

 
Vista:

AYUDA ANDROID ONTOUCH

Publicado por pbljnglz (5 intervenciones) el 29/11/2014 11:37:16
Hola, me gustaría saber si existe alguna forma de que android detecte que mi dedo está sobre la pantalla en cada momento. Me explico mejor con un ejemplo:
Como podría hacer por ejemplo una aplicacion en la que se muestre un "1" en la pantalla. Y mientras pulso la pantalla el numero vaya aumentando: 1,2,3,4,5.... hasta que levante el dedo. Muchas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Francisco
Val: 466
Oro
Ha mantenido su posición en Android (en relación al último mes)
Gráfica de Android

AYUDA ANDROID ONTOUCH

Publicado por Francisco (358 intervenciones) el 29/11/2014 22:13:31
tendrás que poner un contador de tiempo que se inicie cuando detecta que la pantalla ha sido presionada y detener el timer cuando el evento onTouchEvent detecte que se ha dejado de presionar,


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
public class MainActivity extends ActionBarActivity {
 
	TextView texto;
	int contador_tiempo=0;
	Handler handler = new Handler();
	Runnable runnable = new Runnable() {
	        public void run() {
	            metodo_timer();
	        }
	    };
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        texto=(TextView) findViewById(R.id.text1);
 
    }
 
    @Override
	public boolean onTouchEvent(MotionEvent event) {
		if(event.getAction()==event.ACTION_DOWN){
			runnable.run();
		}
 
		if(event.getAction()==event.ACTION_UP){
			handler.removeCallbacks(runnable);
		}
 
		return super.onTouchEvent(event);
	}
 
	public void metodo_timer(){
 
		// se repite cada 1000 milisegundos
		handler.postDelayed(runnable, 1000);
		contador_tiempo++;
		texto.setText(""+ contador_tiempo);
    }
 
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

AYUDA ANDROID ONTOUCH

Publicado por pbljnglz (5 intervenciones) el 30/11/2014 22:03:07
Hola muchas gracias por la ayuda, pero aun hay algo que no me funciona y supongo que entonces mi error esta en otro lado: Quiero que cada vez que se pulse la pantalla y se mantenga pulsado vaya creciendo el nivel de rojo en rgb de un rectangulo que hay dibujado:
Mi problema esta en que cuando pulso si empieza a hacer lo qeu quiero pero no para cuando levando el dedo, como si no detectase el caso ACTION UP
1
2
3
4
5
6
public void metodo_timer(){
		handler.postDelayed(runnable, 10);
		r++; // r es global
		hazlo=true; // hazlo tambien
	    invalidate();
	}

1
2
3
4
5
6
7
8
9
10
11
if(hazlo==true){
 
	            	pincel1.setStyle(Paint.Style.FILL);
		        	   pincel1.setARGB(255, r,g,b);
		            canvas.drawRect(ancho/6,(alto*13)/24,(5*ancho)/6,(14*alto)/24,pincel1);
 
		            pincel1.setStyle(Paint.Style.STROKE);
		        	   pincel1.setARGB(255, 13,13,13);
		            canvas.drawRect(ancho/6,(alto*13)/24,(5*ancho)/6,(14*alto)/24,pincel1);
		            hazlo=false;
		           }
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Francisco
Val: 466
Oro
Ha mantenido su posición en Android (en relación al último mes)
Gráfica de Android

AYUDA ANDROID ONTOUCH

Publicado por Francisco (358 intervenciones) el 30/11/2014 23:59:06
No lo se eso de invalídate() que es un método que has creado ?


1
2
3
4
5
6
7
8
9
10
11
12
13
14
public void metodo_timer(){
    handler.postDelayed(runnable, 10);
    r++; // r es global
 
 
    pincel1.setStyle(Paint.Style.FILL);
    pincel1.setARGB(255, r,g,b);
    canvas.drawRect(ancho/6,(alto*13)/24,(5*ancho)/6,(14*alto)/24,pincel1);
 
    pincel1.setStyle(Paint.Style.STROKE);
       pincel1.setARGB(255, 13,13,13);
    canvas.drawRect(ancho/6,(alto*13)/24,(5*ancho)/6,(14*alto)/24,pincel1);
    hazlo=false;
}


prueba asi me dices
si no te va prueba ha declarar los objetos fuera del método timer

Tiene que ir


suerte
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

AYUDA ANDROID ONTOUCH

Publicado por pbljnglz (5 intervenciones) el 01/12/2014 20:46:58
invalidate() si no me equivoco lo que hace es borrar lo que haya en la pantalla y llamar al metodo onDraw.
Si doy las instrucciones dentro de el metodo_timer() no se dibuja nada, no se porque, solo se dibuja si doy las intruscciones dentro del metodo onDraw.
Sigue sin funcionar muchas gracias por estar ayudandome !
Todas las variables que utilizo dentro del metodo_timer son globales y ya las he asignado un valor. Pero como digo no se dibuja nada
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Francisco
Val: 466
Oro
Ha mantenido su posición en Android (en relación al último mes)
Gráfica de Android

AYUDA ANDROID ONTOUCH

Publicado por Francisco (358 intervenciones) el 01/12/2014 23:00:39
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
public void metodo_timer(){
 
        // Te lo he puesto todo junto para  que se te sea mas facil comprenderlo
 
		// se repite cada 1000 milisegundos
		handler.postDelayed(runnable, 1000);
		contador_tiempo++;
		if (r<250){
			r=r+10;
		}
 
 
		// tienes que tener un lienzo para poder pintar en este caso es Relativelayout
 
		RelativeLayout layout1 = (RelativeLayout) findViewById(R.id.RelativeLayout1);
 
		ImageView image= new ImageView(this);
 
        Bitmap bmp = Bitmap.createBitmap(200,200, Bitmap.Config.ARGB_8888);
 
        Canvas	canvas=new Canvas(bmp);// se pinta sobre un bitmap y uego se carga en la ImageView
 
   	    canvas.drawColor(Color.rgb(r, g, b));
		Paint pincel1=new Paint();
 
	   pincel1.setStyle(Paint.Style.FILL);
 	   pincel1.setColor(Color.rgb(r, r,r)); // aqui pones tu los valores de los colores
       canvas.drawRect(30,30,170,170,pincel1);
 
       pincel1.setStyle(Paint.Style.STROKE);
 	   image.setImageBitmap(bmp);
       layout1.addView(image);// Por ultimo se carga todo en el Relativelayout que es el la pantalla principal
 
		texto.setText(""+ r);
}
 
 
 // Saludos................
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

AYUDA ANDROID ONTOUCH

Publicado por pbljnglz (5 intervenciones) el 02/12/2014 23:57:21
Muchas graciaas has resuelto mi problema ! Muchas gracias por la ayuda prestada en todo momentoo!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar