2013-02-15 15 views
6

カメラのプレビューで矩形のオーバーレイ(より長方形のフレームに近い)を追加するにはどうすればよいですか?私のアプリケーションは、クリックするとカメラを開くボタンで構成されています。 そのカメラプレビューでオーバーレイが必要です。カメラアプリケーションに長方形のオーバーレイを追加するにはどうすればよいですか?

javaファイルのコードは次のとおりです。

public class MainActivity extends Activity { 
    Button b; 
    Intent i; 
    Bitmap bmp; 
    final static int cameraData = 0; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     b = (Button) findViewById(R.id.button); 
     InputStream is = getResources().openRawResource(R.drawable.ic_launcher); 
     bmp = BitmapFactory.decodeStream(is); 
     b.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
      // TODO Auto-generated method stub 
      i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
      startActivityForResult(i, cameraData); 

     } 
    }); 
} 
} 

次のようにレイアウトファイルは次のとおりです。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" 
tools:context=".MainActivity" > 

<TextView 
    android:id="@+id/text" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_centerHorizontal="true" 
    android:layout_gravity="center" 
    android:text="click to take photo" /> 

<Button 
    android:id="@+id/button" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="click" 
    android:layout_gravity="center" /> 

</LinearLayout> 

答えて

4

あなたはSurfaceViewクラスを拡張して、独自のプレビューを作成する必要があります。

以下のリンクを参考にしてください。

Custom camera android

ニーズどおり

+0

どのように矩形を描くのですか? –

+0

あなたはイメージを取って表面ビューの上に置くことができます – koti

+0

ok ..私は長方形のイメージを置くことを提案しますか?それは透明になるだろうか? –

13

ファーストをカスタマイズchild.andとしてSurfaceViewとでframeLayout取るビューを拡張するパブリッククラスを作成します。 onDraw()メソッド内で、四角形を描画します。たとえば:

public class Box extends View { 
    private Paint paint = new Paint(); 
    Box(Context context) { 
    super(context); 
    } 

    @Override 
    protected void onDraw(Canvas canvas) { // Override the onDraw() Method 
    super.onDraw(canvas); 

    paint.setStyle(Paint.Style.STROKE); 
    paint.setColor(Color.GREEN); 
    paint.setStrokeWidth(10); 

    //center 
    int x0 = canvas.getWidth()/2; 
    int y0 = canvas.getHeight()/2; 
    int dx = canvas.getHeight()/3; 
    int dy = canvas.getHeight()/3; 
    //draw guide box 
    canvas.drawRect(x0-dx, y0-dy, x0+dx, y0+dy, paint); 
    } 
} 

はその後、あなたのカメラのプレビューアクティビティでは、あなたのBoxクラス次に

Box box = new Box(this); 

にインスタンスを持って、

addContentView(box, new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); 

緑の四角形は、あなたのカメラに描画されますプレビューがんばろう!ここで私を助けたリンクDraw on camera preview

+0

あなたは天才です!ありがとう、神様の祝福!!! – Vincy

+0

これは正解でなければなりません – graell

関連する問題