如何在动态壁纸中居中GIF

时间:2014-07-11 02:18:01

标签: java android

我正在使用放在原始目录中的gif图像制作动态壁纸,无论我使用什么设备,如何将gif放在屏幕中央?我理解为什么我的代码现在把它放在左边,因为display.getWidth-display.getWidth = 0,与高度相同,因此(0,0)在左上角。但是什么是中心?!我似乎无法弄清楚我的生活。这个类正在扩展WallpaperService。

@Override
    public void onSurfaceChanged(SurfaceHolder holder, int format, int width, int height) {
        super.onSurfaceChanged(holder, format, width, height);


        mScaleX = width / (1.5f*mNyan.width());
        mScaleY = height / (1.5f*mNyan.height());
        Display display = ((WindowManager)getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();

        mWidth = (display.getWidth()-display.getWidth());
        mHeight = (display.getHeight()-display.getHeight());





        nyan();
    }

这是画画布的结尾...

void nyanNyan(Canvas canvas) {

        canvas.save();
        canvas.scale(mScaleX, mScaleY);
        mNyan.setTime(mWhen);
        mNyan.draw(canvas, mWidth,mHeight);
        canvas.restore();
    }

任何人都可以帮忙!?!我被卡住了,我无法超越这个。我也试过了,没有任何运气:

void nyanNyan(Canvas canvas) {

        canvas.save();
        canvas.scale(mScaleX, mScaleY);
        mNyan.setTime(mWhen);
        mNyan.draw(canvas, mCenterX - mNyan.width() , mCenterY - mNyan.height());
    }

1 个答案:

答案 0 :(得分:1)

由于我不完全理解您的代码(例如mCenterX之类的变种来自何处或如何定义),我无法保证代码在没有进一步调整的情况下正常运行。

假设您可以访问nyan的宽度和高度(我将其称为nyan.getWidth())和画布'维度,那么您上一次mNyan.draw()调用应该如下所示:

mNyan.draw(
    canvas,
    ( canvas.getWidth() - nyan.getWidth() ) / 2,
    ( canvas.getHeight() - nyan.getHeight() ) / 2
);