Как нарисовать ограничивающую рамку вокруг лица на 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. Есть много учебников о том, как это сделать.

Другие вопросы по тегам