Android 实时壁纸屏幕旋转

Android 实时壁纸屏幕旋转,android,live-wallpaper,screen-rotation,Android,Live Wallpaper,Screen Rotation,我目前正在制作一种非常密集的实时壁纸,它不能很好地处理屏幕旋转 事实上,墙纸已被销毁,并显示一个空白屏幕,而无需调用onSurfaceChanged 以下是onSurfaceChanged方法中的内容: @Override public void onSurfaceChanged(SurfaceHolder holder, int format, int width, int height) { // TODO Auto-generated met

我目前正在制作一种非常密集的实时壁纸,它不能很好地处理屏幕旋转

事实上,墙纸已被销毁,并显示一个空白屏幕,而无需调用onSurfaceChanged

以下是onSurfaceChanged方法中的内容:

@Override
    public void onSurfaceChanged(SurfaceHolder holder, int format,
            int width, int height) {
        // TODO Auto-generated method stub
        super.onSurfaceChanged(holder, format, width, height);

        mRatio = (float) width / height;
        if (mRatio > 1) {
            orientation = 0;
        }
        if (mRatio < 1) {
            orientation = 1;
        }
        setRunning(true);
        Log.i(TAG, "Screen Rotation...");
        mHandle.post(r);
    }

在您的舱单中,声明:

    <activity android:name=".YourActivityName"
              android:configChanges="keyboardHidden|orientation"
    </activity>

你能发布更多的代码吗?需要知道所有繁重的工作都在哪里完成。在我的实时墙纸中,屏幕旋转期间会调用onSurfaceChanged和onVisibilityChanged。另外,请检查LogCat在方向更改期间是否出现类似“等待墙纸偏移超时”的情况。感谢您的回复,我已将live墙纸服务更改为:-但它不起作用:(我的问题是,我一直在初始化20个矩形,并且有40个左右的if语句用于设置它们的动画。即使我完成了减缓性能的动画设置,if语句也一直在被检查。上述答案不适用于实时壁纸,但适用于使用SurfaceView的应用程序。因此,设置configChanges属性将被禁用。)o无任何内容。请发布更多代码..public void drawssurface(){mRectArray=new Rect[]{initialize 20 rectgles};,if(语句){if(语句){animate rectangles}}..重复if语句40次,c.drawrectarray(mRectArray[x])…绘制40个矩形}-正在循环void为什么要在绘图方法中初始化新矩形?每次循环初始化20个新矩形将大大降低性能。资源初始化应在Engine或WallperService onCreate()中完成方法。并且您可能不需要40个if语句,请记住,您的武库中也有for、while和switch循环。。
    <activity android:name=".YourActivityName"
              android:configChanges="keyboardHidden|orientation"
    </activity>