Android - Ayuda con textview

 
Vista:
sin imagen de perfil
Val: 197
Plata
Ha mantenido su posición en Android (en relación al último mes)
Gráfica de Android

Ayuda con textview

Publicado por Luis (97 intervenciones) el 19/07/2016 10:16:41
Hola a toda la comunidad, soy nuevo en esto de android tengo nociones muy básicas.
Estoy intentando crear una pequeña aplicación que seleccione aleatoriamente una ciudad de una lista, lo cual ya lo he conseguido.

Pero ando intentando que en el textview donde se muestra el resultado seleccionado por Random antes de que aparezca el resultado, que se mostrasen todas las ciudades una tras otra a alta velocidad dando el efecto de azar, sino al darle al button solo aparece la ciudad y no da efecto de sorteo.

Espero haberme explicado.

Les dejo el código fuente que utilizo para realizar el sorteo por si a alguien le sirve, pero no se como implementar ese efecto azar al textview.

Muchas gracias de antemano.

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
package com.example.homer.ciudadesalazar;
 
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
 
public class MainActivity extends AppCompatActivity {
 
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
 
final TextView textoAmostrar = (TextView) findViewById(R.id.textView1);
Button sorteo = (Button) findViewById(R.id.button1);
 
final String[] ciudades = { "Sevilla", "Benidorm", "Cordova",  "Castilla la mancha", "Barcelona",  "El ejido", "Hinojosa", "Alicante", "Murcia"};
 
sorteo.setOnClickListener(new View.OnClickListener(){
 
@Override
public void onClick(View v){
final int rando = (int) (Math.random() * 9);
textoAmostrar.setText(ciudades[rando]);
}
});
}}
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 con textview

Publicado por Francisco (358 intervenciones) el 19/07/2016 14:32: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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
Button sorteo;
TextView textoAmostrar;
int rando=0;
int contador=0;
 
String[] ciudades = { "Sevilla", "Benidorm", "Cordova",  "Castilla la mancha", "Barcelona",  "El ejido", "Hinojosa", "Alicante", "Murcia"};
 
 
 
 
 
 
 
Handler handler = new Handler();
Runnable runnable = new Runnable() {
	public void run() {
		empiezaSorteo();
	}
};
 
 
 
 
 
@Override
protected void onCreate(Bundle savedInstanceState) {
	super.onCreate(savedInstanceState);
	setContentView(R.layout.textoaleatorio);
 
 
	sorteo=(Button) findViewById(R.id.button1);
	textoAmostrar=(TextView) findViewById(R.id.textview);
 
	sorteo.setOnClickListener(new View.OnClickListener(){
 
		@Override
		public void onClick(View v){
 
			rando = (int) (Math.random() * 9);
			runnable.run();
		}
	});
 
}
 
public void empiezaSorteo(){
 
	if(contador<ciudades.length-1){
 
		textoAmostrar.setText(ciudades[contador]);
		contador ++;
		handler.postDelayed(runnable, 100);
 
 
	}else{
 
		contador=0;
					textoAmostrar.setText("Resultado "+ ciudades[rando]);
			handler.removeCallbacks(runnable);
	}
 
}






Comenta si te sirvio
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 197
Plata
Ha mantenido su posición en Android (en relación al último mes)
Gráfica de Android

Ayuda con textview

Publicado por Luis (97 intervenciones) el 19/07/2016 14:53:01
Gracias Francisco por su pronta respuesta, como dije estoy muy verde en esto de programar pero por lo que puedo deducir he de crear una nueva activity llamada textoaleatorio o solo he de crear el layout?? Para ser llamado??

Esta noche cuando llega a casa lo intentare y le comento.
Muchas gracias
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
sin imagen de perfil
Val: 197
Plata
Ha mantenido su posición en Android (en relación al último mes)
Gráfica de Android

Ayuda con textview

Publicado por Luis (97 intervenciones) el 25/07/2016 17:19:16
Hola de nuevo Francisco.

Ya por fin tuve un rato y pude provar su codigo el cual funciono perfecto, me costo un poco adaptarlo pero gracias a usted lo consegui.

Solo me queda un pequeño problema y es que cuando se muestran aleatoriamente todas las ciudades antes de que se ejecute la selección, las 9 ciudades solo pasan 1 vez por el textview y la animación de todas las ciudades dura no llega a 2 segundos.

He intentado que se repitan 3 o 4 veces toda la serie de cuidades antes de la selección para que dure mas la animación pero sin exito.
alguna sugerencia de como hacerlo ??

Solo se me ocurre repetir el numero de ciudades que tengo en el string ciudades pero seguro que habrá otra forma este es el string

1
String[] ciudades = { "Sevilla", "Benidorm", "Cordova",  "Castilla la mancha", "Barcelona",  "El ejido", "Hinojosa", "Alicante", "Murcia"};

y yo lo colocaria así:

1
String[] ciudades = { "Sevilla", "Benidorm", "Cordova",  "Castilla la mancha", "Barcelona",  "El ejido", "Hinojosa", "Alicante", "Murcia", "Sevilla", "Benidorm", "Cordova",  "Castilla la mancha", "Barcelona",  "El ejido", "Hinojosa", "Alicante", "Murcia", "Sevilla", "Benidorm", "Cordova",  "Castilla la mancha", "Barcelona",  "El ejido", "Hinojosa", "Alicante", "Murcia", "Sevilla", "Benidorm", "Cordova",  "Castilla la mancha", "Barcelona",  "El ejido", "Hinojosa", "Alicante", "Murcia", "Sevilla", "Benidorm", "Cordova",  "Castilla la mancha", "Barcelona",  "El ejido", "Hinojosa", "Alicante", "Murcia", "Sevilla", "Benidorm", "Cordova",  "Castilla la mancha", "Barcelona",  "El ejido", "Hinojosa", "Alicante", "Murcia"};

y en vez de:
rando = (int) (Math.random() * 9);

Seria:
rando = (int) (Math.random() * 55);

Pero creo que no seria lo correcto.

Como podria hacerlo ?

Gracias por su 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
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 con textview

Publicado por francisco (358 intervenciones) el 25/07/2016 18:19:38
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
int repeticiones=0; //declara esta variable
 
 
@Override
	public void onClick(View v){
 
		rando = (int) (Math.random() * 9);
		repeticiones=0;
		runnable.run();
 
	}
	});
 
 
 
 
public void empiezaSorteo(){
	int repetir=3;  //pones quui el valor de las repeticiones que quieras
 
	if(contador<ciudades.length-1){
 
		textoAmostrar.setText(ciudades[contador]);
		contador ++;
		handler.postDelayed(runnable, 100);
 
	}else{
 
		contador=0;
		repeticiones++;
		handler.postDelayed(runnable, 100);
	}
 
	if (repeticiones==repetir){
		textoAmostrar.setText("Resultado "+ ciudades[rando]);
			handler.removeCallbacks(runnable);
	}
 
}
 
// esto se puede hacer de muchas maneras y esta puede ser una.
comenta si te sirvio
Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 197
Plata
Ha mantenido su posición en Android (en relación al último mes)
Gráfica de Android

Ayuda con textview

Publicado por Luis (97 intervenciones) el 29/07/2016 18:05:11
Gracias Francisco me sirvió perfecto su código, de seguro a muchos usuarios que pasen por aquí les servira
Ahora a seguir avanzando.
Mil gracias podemos dar este hilo por cerrado.
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 con textview

Publicado por Jose Antonio Perez Torales (7 intervenciones) el 05/08/2016 01:48:14
Cambia tu onClick por eso amigo espero que te sirva
1
2
3
4
5
6
7
8
9
@Override
	public void onClick(View v){
 
		rando = (int) (Math.random() * 9);
		repeticiones=0;
		runnable.run();
 
	}
});
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar