Me gustaría crear un bucle en algún lugar de mi código de Android que cambia el color de un rectángulo dibujable entre dos colores de forma continua a algún ritmo. Me gustaría comenzar y dejar de parpadear con dos botones. He investigado mucho, pero parece que no puedo entender cómo hacerlo. Soy nuevo en Android y no tengo experiencia con los métodos run(). Pero supongo que tengo que hacer algún tipo de clase rectangular con un método run() que lo animará a cambiar de color.Animación de color de forma en Android
Respuesta
También soy bastante nuevo en Android, pero le daré una oportunidad.
Como dices que quieres que parpadee, deberías poder cambiar la imagen real entre, digamos, azul y rojo, con un simple bucle 'for'. Cuando se presiona el botón, puede cambiar el estado de un booleano de falso a verdadero. Entonces, cuando la declaración 'para' ya no es cierta, salta al siguiente conjunto de código, que lo detiene. Esto es lo que haría.
Su XML para los dos botones:
<Button
android:id="@+id/start"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Start"
android:Clickable="true"
android:onClick="start"
/>
<Button
android:id="@+id/stop" <!-- Gives the button an ID to use in java code -->
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Stop" <!-- sets the text on the button -->
android:Clickable="true" <!-- makes the button clickable -->
android:onClick="stop" <!-- The method it calls when it is clicked, removes the necessity of an OnClickListener -->
/>
Ahora, usted tendría ImageViews 2: blue_rectangle
y red_rectangle
, tanto en el mismo lugar en el diseño. Aquí está el XML para las dos ImageViews
<ImageView
android:id="@+id/blue_rectangle"
android:layout_width="100dp"
android:layout_height="75dp"
android:layout_marginLeft="50dp"
android:layout_marginTop="5dp"
android:src="@drawable/blue_rectangle" />
<ImageView
android:id="@+id/red_rectangle"
android:layout_width="100dp"
android:layout_height="75dp"
android:layout_marginLeft="50dp"
android:layout_marginTop="5dp"
android:src="@drawable/red_rectangle" />
Esta parte siguiente es la parte difícil.
Aquí está el Java.
package your.package.name.thingy.here;
//everything it tells you to import goes here
public class BlinkingActivity extends Activity{
ImageView blueRectangle;
ImageView redRectangle;
Button start;
Button stop;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.yourLayout);
blueRectangle = (ImageView) findViewById(R.id.blue_rectangle);
redRectangle = (ImageView) findViewById(R.id.red_rectangle);
start = (Button) findViewById(R.id.start);
stop = (Button) findViewById(R.id.stop);
Boolean isBlinking = new Boolean(false);
blinkRectangle(whateverVariableThisNeeds);
}
public static void blinkRectangle(View view){
blueRectangle.setVisibility(View.INVISIBLE);
redRectangle.setVisibility(View.INVISIBLE);
for(initialization; isBlinking; update){
blueRectangle.setVisibility(View.VISIBLE);
blueRectangle.postDelayed(new Runnable() {
@Override
public void run() {
blueRectangle.setVisibility(View.INVISIBLE);
}
}, 2000); //the 2000 is the number of milliseconds for how long blue is visible
redRectangle.setVisibility(View.VISIBLE);
redRectangle.postDelayed(new Runnable() {
@Override
public void run(){
redRectangle.setVisibility(View.INVISIBLE);
}
}, 2000);
blueRectangle.setVisibility(View.VISIBLE); //This prevents a bug where if the user hits the stop button at just the right time, both rectangles will be invisible.
}
public static void start(View view){ //no need to call this anywhere, the XML onClick does it for you
isBlinking = true; //I think this is how you set a boolean, if not, correct me.
}
public static void stop(View view){//same here
isBlinking = false; //again, correct me if I'm wrong.
}
}
Esto es lo que hace básicamente el código.
Tiene un valor booleano predeterminado en falso. Si bien es falso, el rectángulo no parpadea. Si bien es cierto, se ejecuta la instrucción for
en blinkRectangle()
. Ese lazo for
hace visible el azul, espera 2 segundos, lo hace invisible, hace que el rojo sea visible, espera dos segundos y se repite. Los métodos start()
y stop()
cambian el booleano a verdadero y falso, respectivamente. Creo que este tipo de bucle for
vuelve a verificar el booleano cuando vuelve a la cima. Nunca he trabajado con eso antes. Eso es lo que pude deducir del sitio web que miré.
Bueno, creo que eso es todo. Si no entiende qué es lo que hace el código, o si no funciona, o si la pregunta es incorrecta, o simplemente estoy completamente equivocado, o ALGO, simplemente haga un comentario sobre esta respuesta. ¡Espero que esto funcione!
¡Buena suerte!
P.S. Estos son los sitios web que he utilizado como referencia
http://www.tutorialspoint.com/java/java_loop_control.htm
http://www.java-examples.com/java-boolean-example
Wow ... Me he dado cuenta de esta pregunta es de 2 años de edad. Aún así, ¡espero que esto te ayude!
- 1. Animación de color de texto
- 2. Javascript color Animación
- 3. Android: cambiar el color de forma en tiempo de ejecución
- 4. Animación personalizada en Android
- 5. Animación de color de texto UIButton
- 6. Android. Rendimiento de animación
- 7. Android: ¿Animación de desplazamiento?
- 8. Android: dicha animación usando XML para la animación en Android
- 9. animación en android
- 10. página de Android animación Curl
- 11. secuencia de animación de Android
- 12. tipos de técnicas de animación en android?
- 13. Cómo personalizar el color del color de CheckMark en Android en un cuadro de diálogo. : android
- 14. Android Arrastra/Animación de Vistas
- 15. Mezcla de color en Android
- 16. Evento de animación final android
- 17. Animación al cambiar de actividad en Android?
- 18. java.util.ConcurrentModificationException en la animación de Android
- 19. Android: ¿Animación en la vista de galería?
- 20. Deslizar expandir animación en android
- 21. efecto de brillo de animación de Android en imageview
- 22. Android ui elemento animación
- 23. Android carga la animación
- 24. Animación Android Listener
- 25. Android ListView Seleccionar animación
- 26. Problemas de XML de animación de Android
- 27. Android: ViewFlipper animación
- 28. Jquery hover - Cómo hacer animación de color de fondo
- 29. Android Translate Animación
- 30. Android animación ViewPager
No te preocupes, [obtén insignias para eso] (http://stackoverflow.com/questions/10874571/how-does-check-ajax-referer-really-work/18358174#comment27016156_18358174) ([Nigromante] (http://stackoverflow.com/help/badges/17/necromancer)) y upvotes demostrarán su utilidad;) – brasofilo