1

我的动态壁纸大部分时间在主屏幕更改时滑动不顺畅。背景位置没有复杂的编码。它只是使用位于 onoffsetschanged 方法上的 xpixles 来调整壁纸的 x 位置。有时它会像在日出动态壁纸应用程序中一样滑动。但大多数其他时间它滑动..不知道如何描述它,但它就像一个静态的急剧移动。有没有关于那些家伙的想法。此致。

private void drawS() {
        final SurfaceHolder holder = getSurfaceHolder();        
        canvas = null;
        try {
            canvas = holder.lockCanvas();

            if (canvas != null) {

                background = BitmapFactory.decodeResource(getResources(),
                        R.drawable.background);         
                canvas.drawBitmap(background, mXPixels, mYPixels, null);

            }

        }
        finally {
            if (canvas != null) {
                holder.unlockCanvasAndPost(canvas);
            }
        }


        handler.removeCallbacks(runnableS);

        if (visible) {

            handler.postDelayed(runnableS, 25);
        }
    }
4

2 回答 2

2

尽量避免在绘图例程中创建资源;从 drawS() 函数中删除它:

background = BitmapFactory.decodeResource(getResources(),
                    R.drawable.background);      

并将它放在你初始化你的东西的任何地方,稍后只使用对背景位图的引用。

如果您查看 logcat,您会发现每次调用 drawS(); 时都会进行很多资源混洗和内存管理(为资源分配内存、解码其中的位图图像等);即每次绘制背景时...

干杯,

伊维察

于 2012-05-14T12:33:59.390 回答
0

我遇到了同样的问题,并按照 Ivica 的建议解决了。我在表面创建子中移动了位图创建线:

public void onSurfaceCreated(SurfaceHolder holder) {
   super.onSurfaceCreated(holder);
   mybackground = BitmapFactory.decodeResource(getResources(), R.drawable.mybg);
 }

这样滑动很流畅

于 2012-08-29T15:00:49.117 回答