2012. 7. 9. 13:53

[출처 : http://golee07.tistory.com/entry/Android-SurfaceView-%EC%9C%84%EC%97%90-Canvas-%EA%B7%B8%EB%A6%AC%EA%B8%B0 ] 




SurfaceView에서 작동하는 Camera Preview위에 어떠한 그림을 그리기 위해서는 OnDraw를 오버라이드하는 방법이 아니라 아래와 같이 그려주는 View를 Activity에 추가시켜 줘야합니다. 아래와 같이 addContentView를 호출해주시면 됩니다.


COPY TO CLIPBOARD | DOWNLOAD | RAW | EMBED | REPORT ABUSE

  1. public class TestCameraOverlay extends Activity {
  2.     /** Called when the activity is first created. */
  3.     @Override
  4.     public void onCreate(Bundle savedInstanceState) {
  5.         super.onCreate(savedInstanceState);
  6.         requestWindowFeature(Window.FEATURE_NO_TITLE);
  7.         Preview mPreview = new Preview(this);
  8.         DrawOnTop mDraw = new DrawOnTop(this);
  9.         setContentView(mPreview);
  10.         addContentView(mDraw, new LayoutParams
  11. (LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
  12.     }
  13. }

그림을 그리는 View를 상속받은 DrawTop 클래스는 아래와 같이 OnDraw를 오버라이드하여 Canvas를 그려줄 수 있습니다. 저는 Path를 이용하여 삼각형을 그려봤습니다.


COPY TO CLIPBOARD
 | DOWNLOAD | RAW | EMBED | REPORT ABUSE
  1.  
  2. public class DrawOnTop extends View{
  3.        
  4.         public DrawOnTop(Context context) {
  5.                 super(context);
  6.         }
  7.  
  8.         @Override
  9.         protected void onDraw(Canvas canvas) {
  10.         // TODO Auto-generated method stub
  11.         Paint paint = new Paint();
  12.         paint.setStyle(Paint.Style.FILL);
  13.         paint.setColor(Color.BLACK);
  14.         paint.setTextSize(20);
  15.         canvas.drawText("Test Text"2020, paint);
  16.  
  17.         paint.setStyle(Paint.Style.STROKE);
  18.         paint.setStrokeWidth(2);
  19.         paint.setColor(Color.RED);
  20.        
  21.         Path path = new Path();
  22.         path.moveTo(5050);    
  23.         path.lineTo(1000);
  24.        
  25.         path.lineTo(15050);        
  26.         path.close();
  27.        
  28.         path.offset(110150);
  29.         canvas.drawPath(path, paint);
  30.        
  31.        
  32.                 super.onDraw(canvas);
  33.         }
  34. }



참조 : http://groups.google.com/group/android-developers/msg/6e1f453ac051f6bd?pli=1
참조 : http://stackoverflow.com/questions/3548666/overlay-images-onto-camera-preview-surfaceview

Posted by k1rha