2015-10-16 42 views
2

我有一個XML格式的FrameLayout裏:如何畫周圍的臉邊框上的FrameLayout的Android

<FrameLayout 
    android:layout_width="150px" 
    android:layout_height="200px" 
    android:id="@+id/preview"> 
</FrameLayout> 

該預覽顯示相機視圖:

mPreview = new CameraSurfacePreview(MainActivity.this, cameraObj,...); 
preview.addView(mPreview2); 
.... 

它成功地從前置攝像頭顯示面。我有臉部矩形x和y座標。我如何在frameLayout上顯示一個邊界框?

謝謝。

回答

1

好吧,您可以使用ShapeDrawable,並將其佈局參數設置爲您需要的大小和位置,並將其與CameraSurfacePreview一起添加到FrameLayout中。

這並不是所有的困難。首先用你想要的屬性創建一個ShapeDrawable。然後將其設置爲標準View對象的背景,然後添加帶有佈局參數的視圖以調整其大小。所以,如果你想

ShapeDrawable sd = new ShapeDrawable(new RectShape()); 
sd.getPaint().setColor(0xFFFFFFFF); 
sd.getPaint().setStyle(Paint.Style.STROKE); 
sd.getPaint().setStrokeWidth(1); 
View shapeView = new View(context); 
shapeView.setBackground(sd); 


FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(100, 100); 
params.setMargins(left, top, 0, 0); 
frameLayout.addView(shapeView, params); 

在這種特殊情況下,我做了它一個100x100的圖,所以形狀將自動調整大小的視圖。並且我已經設置好它,以便通過左側和頂部的值從頂部角落偏移。

有很多方法可以做到這一點,但這似乎是最簡單的方法。當然你也可以用XML來完成所有這些。有很多關於如何做到這一點的教程。

+0

我以前沒有使用ShapeDrawable。它應該畫在畫布上。我應該重寫onDraw方法以使其在FrameLayout上繪製? –

+0

它的工作原理!謝謝! –