2014-06-16 3 views
0

SurfaceView를 사용하여 CameraPreview를 표시했습니다. 버튼을 통해 내 활동에서 매개 변수를 dinamically 설정할 수 있습니다. 이제 간단하게 효과를 표시하기 위해 해당 코드를 구현하고 싶습니다.SurfaceView 정적 메서드에서 onDraw 호출

 @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는 버튼의 onClick 메서드에 따라 변경됩니다. 앱을 일시 중지했다가 다시 시작하면 onDraw 메소드가 호출 되었기 때문에 효과가 표시되지만 버튼을 클릭하고 액티비티에 머물러있을 때 변경 사항이 없습니다. 그렇다면 어떻게 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

사용 mPreview.postInvalidate() 액티비티 내부. 미리보기 클래스에서 onDraw 메서드를 호출합니다.

관련 문제