我是android應用程序開發中的新手。我想創建一個應用程序,從相機獲取流並在SurfaceView或FrameLayout上顯示。Android - 在相機上顯示網格線
我需要一個選項顯示上面的流「顯示網格線」,當用戶點擊它網格線將顯示在相機流。
任何人都可以幫助我,我怎樣才能顯示相機流網格線?
任何幫助將是可觀的...
謝謝。 Mohsin
我是android應用程序開發中的新手。我想創建一個應用程序,從相機獲取流並在SurfaceView或FrameLayout上顯示。Android - 在相機上顯示網格線
我需要一個選項顯示上面的流「顯示網格線」,當用戶點擊它網格線將顯示在相機流。
任何人都可以幫助我,我怎樣才能顯示相機流網格線?
任何幫助將是可觀的...
謝謝。 Mohsin
如果你想根據你的屏幕大小dinsetsly畫線,你可以使用它添加到你的相機預覽課。
@Override
protected void onDraw(Canvas canvas)
{
if(grid){
// Find Screen size first
DisplayMetrics metrics = Resources.getSystem().getDisplayMetrics();
int screenWidth = metrics.widthPixels;
int screenHeight = (int) (metrics.heightPixels*0.9);
// Set paint options
paint.setAntiAlias(true);
paint.setStrokeWidth(3);
paint.setStyle(Paint.Style.STROKE);
paint.setColor(Color.argb(255, 255, 255, 255));
canvas.drawLine((screenWidth/3)*2,0,(screenWidth/3)*2,screenHeight,paint);
canvas.drawLine((screenWidth/3),0,(screenWidth/3),screenHeight,paint);
canvas.drawLine(0,(screenHeight/3)*2,screenWidth,(screenHeight/3)*2,paint);
canvas.drawLine(0,(screenHeight/3),screenWidth,(screenHeight/3),paint);
}
}
您還需要添加下面一行在你的相機預覽類的構造函數:
this.setWillNotDraw(false);
如果你想要覆蓋相機預覽,你必須編寫自己的相機。這是相當困難的話題在一個答案覆蓋,但這裏是一個應該讓你開始指南:
http://developer.android.com/guide/topics/media/camera.html#custom-camera
一旦你工作的攝像頭,只需編輯您的相機活動的XML佈局。使用RelativeLayout,它將允許您將其他視圖(按鈕,圖像)放在預覽表面上。
下面是一個與上述指南兼容的XML佈局示例。預覽表面以編程方式創建並放入FrameLayout中(更多信息參見上面的鏈接)。 ImageView將被繪製在預覽表面上。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<FrameLayout
android:id="@+id/camera_preview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
<ImageView
android:id="@+id/grid"
android:src="@drawable/your_grid_drawable"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
</RelativeLayout>
你還必須在那裏放置一個捕捉按鈕和一個網格開關按鈕,但是你應該從上面的例子中瞭解如何去做。只需在RelativeView中添加更多元素並將它們放在普通佈局中即可。
對於這種情況,您在構造函數中設置您的油漆的選擇和節省一些資源。油漆選項是常量,onDraw()方法將被調用很多次。 – Oximer 2016-02-11 16:53:00