我正在用原始目录中的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());
}
最佳答案
由于我不完全了解您的代码(例如mCenterX
等var的来源或定义方式),因此我无法保证代码无需进一步调整即可正常运行。
假设您可以访问nyan的宽度和高度(我将其称为nyan.getWidth()
)和画布的尺寸,那么您上一次的mNyan.draw()
调用应该看起来像这样:
mNyan.draw(
canvas,
( canvas.getWidth() - nyan.getWidth() ) / 2,
( canvas.getHeight() - nyan.getHeight() ) / 2
);