Перекрывающиеся виды в Android
-
12-09-2019 - |
Вопрос
Возможно ли иметь перекрывающиеся виды в Android?Я хотел бы иметь ImageView с прозрачным png спереди и другим видом на заднем плане.
Редактировать:
Это то, что у меня есть на данный момент, проблема в том, что изображение в ImageView непрозрачно, части, которые должны быть прозрачными, просто черные.
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/gallerylayout"
>
<Gallery android:id="@+id/overview"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<ImageView android:id="@+id/navigmaske"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:src="@drawable/navigmask"
/>
</RelativeLayout>
Редактировать:
Я заставил это сработать, это был файл темы от другого программиста из команды.Просто изменил это
<item name="android:background">#FF000000</item>
к этому
<item name="android:background">#00000000</item>
Решение
Android изначально обрабатывает прозрачность для всех видов и объектов рисования (включая изображения в формате PNG), поэтому описанный вами сценарий (частично прозрачный ImageView
перед собой Gallery
), безусловно, возможно.
Если у вас возникли проблемы, это может быть связано либо с макетом, либо с вашим изображением.Я воспроизвел макет, который вы описываете, и успешно добился желаемого эффекта.Вот точный макет, который я использовал.
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/gallerylayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<Gallery
android:id="@+id/overview"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<ImageView
android:id="@+id/navigmaske"
android:background="#0000"
android:src="@drawable/navigmask"
android:scaleType="fitXY"
android:layout_alignTop="@id/overview"
android:layout_alignBottom="@id/overview"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</RelativeLayout>
Обратите внимание, что я изменил родительский RelativeLayout
до высоты и ширины fill_parent
как правило, это то, что вы хотите для основного Вида деятельности.Затем я выровнял верхнюю и нижнюю части ImageView
к верхней и нижней части Gallery
чтобы убедиться, что он находится в центре перед ним.
Я также явно задал фон для ImageView
быть прозрачным.
Что касается самого изображения, которое можно нарисовать, если вы поместите файл PNG куда-нибудь, чтобы я мог посмотреть, я могу использовать его в своем проекте и посмотреть, отвечает ли это.
Другие советы
Кроме того, взгляните на FrameLayout
, вот как приложение Галерея камеры реализует наложение кнопок масштабирования.
Если вы хотите добавить пользовательский экран наложения на макет, вы можете создать пользовательский линейный макет и получить контроль над рисованием и ключевыми событиями.Вы можете использовать мой учебник- Наложение на макет Android- http://prasanta-paul.blogspot.com/2010/08/overlay-on-android-layout.html
Видимая галерея изменяет видимость, благодаря чему вы получаете перекрытие галереи поверх других видов.в приложении Home sample есть несколько хороших примеров этой техники.
Самый простой способ - поместить поле - 40dp в нижней части верхнего изображения
Да, это возможно.Задача, однако, состоит в том, чтобы правильно выполнить их компоновку.Самый простой способ сделать это - создать AbsoluteLayout, а затем поместить два изображения туда, где вы хотите, чтобы они были.Вам не нужно делать ничего особенного для прозрачного png, за исключением того, что он будет добавлен позже в макет.