gpt4 book ai didi

java - 如何使动态壁纸中的 GIF 居中

转载 作者:行者123 更新时间:2023-12-01 12:46:07 25 4
gpt4 key购买 nike

我正在制作一个带有 gif 图像的动态壁纸,并将其放在 raw 目录中,无论我使用什么设备,如何将 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();
}

这就是我绘制 Canvas 的结尾......

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());
}

最佳答案

由于我不完全理解您的代码(例如,像 mCenterX 这样的变量来自哪里或它们是如何定义的),我无法保证代码在不进一步调整的情况下正常运行。

假设您可以访问 nyan 的宽度和高度(我将其称为 nyan.getWidth())以及 Canvas 的尺寸,那么您的最后一个 mNyan.draw() 调用可能应该如下所示:

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

关于java - 如何使动态壁纸中的 GIF 居中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24689178/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com