Плавающее прозрачное окно в Android

Я портирую свое приложение для iOS на Android. Это музыкальный проигрыватель, и у меня есть окно, которое я отображаю поверх основного экрана приложения, которое исчезает - подобно тосту, чтобы дать пользователю информацию о треке.

Что особенного в этом окне, так это то, что оно полупрозрачно. Он позволяет пользователю нажимать кнопки, которые находятся за ним, так что это не диалоговое окно, так сказать.

Как бы я реализовать такое окно в Android? Предположим, у меня есть MainActivity с несколькими кнопками, и я хочу, чтобы появилось это специальное окно. Это просто не сфокусированный вид? Или я должен пытаться создать собственный тост?

1 ответ

Решение

Там нет компонента, который может позволить вам коснуться снизу, но вы можете создать макет внутри RelativeLayout что он поддерживает несколько макетов на оси Z, что позволит вам нажимать кнопки под ним.

Вы можете попробовать этот образец и протестировать его:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/parent"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@android:color/white"
    android:clipChildren="true" >

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/countdown"
        android:layout_marginBottom="24dp"
        android:layout_toRightOf="@+id/countdown"
        android:text="Button" />

    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/button1"
        android:layout_below="@+id/button1"
        android:layout_marginLeft="43dp"
        android:layout_marginTop="97dp"
        android:text="Button" />

    <Button
        android:id="@+id/button3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/button2"
        android:layout_alignBottom="@+id/button2"
        android:layout_toLeftOf="@+id/button2"
        android:text="Button" />

    <Button
        android:id="@+id/button6"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/button3"
        android:layout_alignParentBottom="true"
        android:layout_marginBottom="99dp"
        android:text="Button" />

    <Button
        android:id="@+id/button9"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/button7"
        android:layout_marginBottom="15dp"
        android:layout_marginLeft="10dp"
        android:layout_toRightOf="@+id/button8"
        android:text="Button" />

    <Button
        android:id="@+id/button5"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/button4"
        android:layout_alignBottom="@+id/button4"
        android:layout_toLeftOf="@+id/button9"
        android:text="Button" />

    <Button
        android:id="@+id/button4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/button1"
        android:layout_marginLeft="12dp"
        android:layout_marginTop="13dp"
        android:text="Button" />

    <Button
        android:id="@+id/button8"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/button7"
        android:layout_alignTop="@+id/button2"
        android:layout_marginLeft="41dp"
        android:layout_marginTop="25dp"
        android:text="Button" />

    <Button
        android:id="@+id/button7"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/button6"
        android:layout_marginBottom="12dp"
        android:layout_marginLeft="16dp"
        android:layout_toRightOf="@+id/button2"
        android:text="Button" />

    <LinearLayout
        android:layout_width="300dp"
        android:layout_height="400dp"
        android:layout_centerInParent="true"
        android:background="#96000000"
        android:orientation="vertical" >
    </LinearLayout>

</RelativeLayout>

Этот результат:

На этом изображении черный полупрозрачный макет, расположенный над кнопками, который вы можете использовать вместо этого в качестве полупрозрачного диалога. И вы также можете нажимать кнопки под ним.

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