【发布时间】:2017-05-05 21:53:18
【问题描述】:
我正在处理扩展 SurfaceView 的幻灯片菜单视图,但是当我尝试更改视图的大小时,画布不会改变。
出于调试目的,我正在更改视图调用方法的大小:
public void changeSize() {
width += 10;
getLayoutParams().width = width;
this.setLayoutParams(getLayoutParams());
}
然后在一个绘图函数中,我将画布涂成白色并在视图对角线绘制红线:
public void draw() throws Exception {
SurfaceHolder surfaceHolder = getHolder();
if (surfaceHolder.getSurface().isValid()) {
Canvas canvas = surfaceHolder.lockCanvas();
Log.i(TAG, "draw > canvas size: " + canvas.getWidth() + " " + canvas.getHeight() );
paint.setColor(Color.rgb(255,0,0));
paint.setStrokeWidth(5);
canvas.drawColor(Color.rgb(255, 255, 255));
canvas.drawLine(0, getLayoutParams().height, getLayoutParams().width, 0, paint);
surfaceHolder.unlockCanvasAndPost(canvas);
}
}
我看到的是一个大小固定的白色矩形和部分红线: demo.
另外,当我调用this.getWidth() 时,宽度不变。
为什么视图大小没有变化?画布没有变化是不是同一个原因?我能做些什么来解决它?
【问题讨论】:
标签: android canvas layoutparams