在SurfaceView的静态方法中调用onDraw

时间:2014-06-16 15:15:21

标签: android canvas view drawing surfaceview

我有一个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(); ....

1 个答案:

答案 0 :(得分:0)

在Activity中使用mPreview.postInvalidate()。它在预览类中调用onDraw方法。