android - sacar - mi celular lg se puso en color negativo?
Cambiar el color de fondo no tiene efecto una vez que la pantalla ha sido rotada (2)
todos soy nuevo en Android y ahora estoy enfrentando un problema extraño, el problema en resumen es
"Recibir el mensaje TCP y luego cambiar el color de fondo de la GUI no tiene efecto una vez que se ha girado la pantalla".
Lo que quiero archivar:
Haga que una aplicación se ejecute en un dispositivo Android, conéctese a una PC a través de TCP. PC puede enviar una cadena a la APLICACIÓN, la APLICACIÓN luego hará algo de base en la cadena recibida. En este caso, una cadena, "cambiar el color de fondo a rojo (con el teléfono vibra) / negro" se envía a la APLICACIÓN a través de TCP, por lo que el usuario de Android verá un efecto cegador con la vibración.
Cuál es el problema:
Puedo archivar lo que quiero. Pero una vez que se ha girado la pantalla, no se puede cambiar el color, solo la vibración permanece.
Lo que había intentado:
Puse un botón en la APLICACIÓN que activará manualmente el evento de cambio de color (con vibración). Funciona bien incluso si giro la pantalla.
Pruebas adicionales muestran que la operación de la interfaz de usuario como cambiar el color de fondo y la animación activada por la lectura de TCP se han desvanecido, sin embargo, el tono de llamada y la vibración permanecen sin cambios.
Subo un video a Youtube http://youtu.be/n0gxXzzf-bo
A continuación están el código de Java, el botón y el mismo método TCP: ChangeColor ()
public void ChangeColor(){
Thread t= new Thread(new ChangeColorTest());
t.start();
}
public class ChangeColorTest implements Runnable{
public void run() {
try {
for(int i=0;i<3;i++){
mBlinkHandler.sendEmptyMessageDelayed(1, 0);
Thread.sleep(300);
mBlinkHandler.sendEmptyMessageDelayed(2, 0);
Thread.sleep(300);
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
Handler mBlinkHandler = new Handler(){
@Override
public void handleMessage(Message msg){
super.handleMessage(msg);
// mScreen = (LinearLayout)findViewById(R.id.mylinerlayout);
if(msg.what==1){
mScreen.setBackgroundColor(Color.RED);
Vibratoration();
}else if(msg.what==2){
mScreen.setBackgroundColor(Color.BLACK);
}
}
};
¿Qué quiero saber?
Si alguien pudiera encontrar una solución, sería muy apreciada.
¿Cuál es mi plataforma? Servidor PC: Win7 64bits VS2010 C # plataforma Android: 4.0 desarrollo de Samsung S2 IDE: API de desarrollo de Motodev SDK: Android 3
Android volverá a crear toda la actividad cuando gire la pantalla, por lo que probablemente su variable "mScreen" no apunte a la instancia realmente visible en la pantalla después de la rotación.
Puede evitar que Android reproduzca la actividad como se explica aquí: http://developer.android.com/guide/topics/resources/runtime-changes.html
Una solución sería bloquear la pantalla para que no se pueda rotar? (O al menos bloquearlo durante esta funcionalidad).
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);