Перекрывающиеся виды в Android - PullRequest
71 голосов
/ 07 июня 2009

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

Ответы [ 6 ]

68 голосов
/ 08 июня 2009

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

9 голосов
/ 08 июня 2009

Кроме того, посмотрите на FrameLayout, вот как приложение Галерея камеры реализует наложение кнопок Zoom.

7 голосов
/ 12 августа 2010

Если вы хотите добавить свой пользовательский экран наложения в макет, вы можете создать собственный линейный макет и получить контроль над рисунком и ключевыми событиями. Вы можете мой учебник - наложение на Android Layout- http://prasanta -paul.blogspot.com / 2010/08 / overlay-on-android-layout.html

1 голос
/ 07 июня 2009

Видимая галерея меняет видимость, поэтому вы получаете галерею поверх другого вида. пример приложения Home содержит несколько хороших примеров этой техники.

0 голосов
/ 06 ноября 2014

Простейший способ arround - поместить поле -40dp в нижнюю часть верхнего изображения.

0 голосов
/ 07 июня 2009

Да, это возможно. Задача, однако, заключается в том, чтобы сделать их макет правильно. Самый простой способ сделать это - использовать AbsoluteLayout, а затем поместить два изображения в нужное место. Вам не нужно делать ничего особенного для прозрачного png, кроме как добавить его позже в макет.

...