我正在使用放在原始目录中的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());
}
答案 0 :(得分:1)
由于我不完全理解您的代码(例如mCenterX
之类的变种来自何处或如何定义),我无法保证代码在没有进一步调整的情况下正常运行。
假设您可以访问nyan的宽度和高度(我将其称为nyan.getWidth()
)和画布'维度,那么您上一次mNyan.draw()
调用应该如下所示:
mNyan.draw(
canvas,
( canvas.getWidth() - nyan.getWidth() ) / 2,
( canvas.getHeight() - nyan.getHeight() ) / 2
);