2013-02-15 58 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

採取的FrameLayout與SurfaceView爲child.and定製按您的需求

+0

如何繪製矩形? – 2013-02-15 11:53:09

+0

你可以拍一些圖像並將它放在曲面的頂部 – koti 2013-02-15 11:55:09

+0

好吧。那麼你建議我把矩形的圖像?它會變得透明嗎? – 2013-02-15 12:00:09

13

首先創建一個擴展查看公共類。在其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 2017-04-18 11:25:06

+0

這應該是正確的答案 – graell 2017-06-25 20:14:30

相關問題