【问题标题】:live wallpaper doesn't slide smoothly on homescreen change动态壁纸在主屏幕更改时滑动不顺畅
【发布时间】:2012-08-29 23:00:49
【问题描述】:

我的动态壁纸在主屏幕切换时大部分时间都不能顺畅滑动。 背景位置没有复杂的编码。它只是使用位于 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);
        }
    }

【问题讨论】:

  • 我也有同样的问题。你现在能做到吗?
  • 不,我仍然有同样的问题.. 我尝试了 Ivica 的想法,但仍然没有用.. 我认为我们应该切换到 openGL.. :/

标签: android wallpaper


【解决方案1】:

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

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

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

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

干杯,

伊维卡

【讨论】:

    【解决方案2】:

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

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

    这样滑动很流畅

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-22
      • 1970-01-01
      相关资源
      最近更新 更多