我有一个SurfaceView来显示CameraPreview。在我的Activity中,通过Button,我可以设置参数,现在我想实现该代码以显示简单的效果。
@Override
protected void onDraw(Canvas canvas){
if (i==0){
rectanglePaint = new Paint();
rectanglePaint.setARGB(0, 0, 0, 0);
rectanglePaint.setStyle(Paint.Style.FILL);
canvas.drawPaint(rectanglePaint);
}
if (i==1){
rectanglePaint = new Paint();
rectanglePaint.setARGB(150, 0, 100, 200);
rectanglePaint.setStyle(Paint.Style.FILL);
canvas.drawPaint(rectanglePaint);
}
...
int i由按钮中的onClick方法更改。如果我暂停并恢复应用程序,则会显示效果,因为它调用了onDraw方法,但是当我单击按钮并保留在Activity中时没有更改。那么,如何调用onDraw方法来显示效果呢?我已经设置了setWillNotDraw(false);在我的预览中。 该按钮在CameraPreview类中调用此方法:
public static void setC1(View v){
v.setWillNotDraw(false);
i = 1;
v.invalidate();//here I want to call onDraw!
v.postInvalidate();//I try it
try{
Camera.Parameters parameters = mCamera.getParameters(); ....
答案 0 :(得分:0)
在Activity中使用mPreview.postInvalidate()。它在预览类中调用onDraw方法。