Вопрос

Возможно ли иметь перекрывающиеся виды в 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, за исключением того, что он будет добавлен позже в макет.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top