Android Camera Preview по центру изображения - PullRequest
2 голосов
/ 22 ноября 2011

Я создаю приложение «Камера», в котором я хочу ограничить предварительный просмотр камеры центрированием и составлять около 60% от общего размера экрана телефона.

  1. Одним из способов является использование FrameLayout of Preview с отступом, чтобы ограничить полезный размер экрана, но я также хочу показать границы (вокруг углов) внутри ограниченной области, что невозможно вЭто также возможно. Также невозможно отобразить отступ в процентах, чтобы я мог ограничить пользователя размером до 60% от размера экрана.
  2. Другой способ - получить изображение, имеющее прозрачную центральную прямоугольную область и имеющее границу во внутреннем прямоугольникеуглы.Но мне как-то нужно ограничить FrameLayout предварительного просмотра внутри этого прямоугольника, что я не могу сделать.Любые предложения по этому варианту?

Пожалуйста, дайте мне знать, если есть какие-либо другие варианты.

Спасибо.

1 Ответ

0 голосов
/ 23 ноября 2011

Если я не до конца понимаю ваши проблемы с использованием android:padding для обеспечения пространства вокруг вашего макета, вы сможете использовать android:layout_margin вместо этого для достижения той же цели, но преодолеть проблемы, о которых вы упоминали. Добавление отступов создает пространство между границей представления и его содержимым. Однако добавление поля создает пространство между границей представления и его родительским элементом, поэтому содержимое по-прежнему заполняет само представление до краев. Однако вы по-прежнему не можете определить интервал просмотра в процентах непосредственно из XML ... вам нужно определить поле как статическое или применить LayoutParams в коде Java, где вы можете рассчитать требуемый запас на основе текущего Размер экрана.

Другим вариантом является использование свойства android:layout_weight внутри вложенного LinearLayout. Расчетная весовая сумма может дать вам 60%, которые вы ищете непосредственно в XML. Примерно так:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="horizontal"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:gravity="center"
  android:weightSum="1.0" >
  <LinearLayout
    android:orientation="vertical"
    android:layout_width="0dp"
    android:layout_height="match_parent"
    android:layout_weight="0.6"
    android:gravity="center"
    android:weightSum="1.0">
    <SurfaceView
      android:layout_width="match_parent"
      android:layout_height="0dp"
      android:layout_weight="0.6" />
  </LinearLayout>
</LinearLayout>

Где SurfaceView - это местоположение вашего предварительного просмотра камеры, теперь по центру 20% экрана со всех сторон. Если вы хотите поместить вещи поверх или ниже этого предварительного просмотра, вы, очевидно, захотите поместить весь этот блок в RelativeLayout или FrameLayout вместе с другими компонентами.

НТН!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...