Как нарисовать ограничивающую рамку вокруг лица на frameLayout Android
У меня есть frameLayout в XML:
<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 и установить его параметры макета в соответствии с нужным вам размером и местоположением, а также добавить его в FrameLayout вместе с вашим CameraSurfacePreview.
Это не все сложно. Сначала создайте 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. Есть много учебников о том, как это сделать.