旋转屏幕后更改背景颜色无效

时间:2012-08-21 15:58:39

标签: android user-interface tcp tcpclient

我是Android的新手,现在我面临一个奇怪的问题,简而言之就是

“接收TCP消息,然后在屏幕旋转后更改GUI的背景颜色无效。”

我要存档的内容:

在Android设备上运行APP,通过TCP连接到PC。 PC可以向APP发送一个字符串,然后APP将根据收到的字符串做一些事情。 在这种情况下,一个字符串,“将地面颜色变为红色(带有手机振动)/黑色”通过TCP发送到APP,因此Android用户将看到一个带有振动的炫目效果。

有什么问题:

我可以存档我想要的内容。但是一旦屏幕旋转,颜色就无法改变,只剩下振动。

我尝试了什么:

我在APP上放了一个按钮,手动触发换色事件(带振动)。即使我旋转屏幕也能正常工作。

进一步的测试表明,TCP读取引起的更改背景颜色和动画等UI操作已经消失,但铃声和振动保持不变。

我将视频上传到Youtube http://youtu.be/n0gxXzzf-bo

下面是java代码,按钮和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);
             }
        }
    };

我想知道什么?

如果有人能够找到解决方案,我们将非常感激。

我的平台是什么? 服务器PC:Win7 64位VS2010 C# Android平台:4.0三星S2 开发IDE:Motodev SDK API:Android 3

2 个答案:

答案 0 :(得分:3)

一种解决方法是锁定屏幕,使其无法旋转? (或至少在此功能期间将其锁定。)

    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

答案 1 :(得分:2)

Android会在您旋转屏幕时重新创建整个活动 - 所以可能是您的变量&#34; mScreen&#34;不会指向旋转后在屏幕上实际可见的实例。

你可以避免,android重新创建活动,如下所述: http://developer.android.com/guide/topics/resources/runtime-changes.html