我有一个LinearLayout
我有一个自定义视图:
public class myView extends View
{
Rect rects = new Rect(30,30,80,80);
Canvas myCanvas;
@Override
public void onDraw(Canvas canvas)
{
myCanvas = canvas;
paint.setColor(Color.RED);
canvas.drawRect(rects, paint);
}
void changeColor()
{
paint.setColor(Color.BLUE);
myCanvas.drawRect(rects, paint);
myCanvas.invalidate();
}
}
在 MainActivity 我有:
LinearLayout lv = (LinearLayout) View.inflate(this, R.layout.activity_main, null);
drawView = new myView(this);
lv.addView(drawView);
setContentView(lv);
Button button3 = (Button) findViewById(R.id.button3);
button3.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v) {
drawView.changeColor();
}
});
单击按钮后,我想通过调用changeColor 来更改矩形的颜色。但是在其他地方创建了新的矩形!你能帮我么?
您正在呼叫drawRect
两次(在使视图无效之前,以及在onDraw
)。此外,无需存储对Canvas
.
将所需的颜色保留在变量中,更改它并使视图无效。-
public class myView extends View {
private Color color = Color.RED;
Rect rects = new Rect(30,30,80,80);
@Override
public void onDraw(Canvas canvas) {
paint.setColor(color);
canvas.drawRect(rects, paint);
}
void changeColor() {
color = Color.BLUE
invalidate();
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)