在Android中浮动透明窗口

时间:2014-08-14 00:46:42

标签: android view transparent android-toast

我将我的iOS应用移植到Android。它是一个音乐播放器,我有一个窗口显示在应用程序主屏幕的顶部,它会逐渐消失 - 类似于Toast,让用户知道有关该轨道的信息。

这个窗口的特别之处在于它是半透明的。它允许用户点击它后面的按钮,所以它不是一个对话框。

如何在Android中实现此类窗口?假设我有一个带有许多按钮的MainActivity,我希望产生这种特殊的窗口。它只是一个不可调焦的视图吗?或者我应该尝试创建自定义Toast?

1 个答案:

答案 0 :(得分: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>

结果

enter image description here

在该图像中,黑色半透明的布局位于按钮的顶部,您可以将其用作半透明对话框。您还可以点击下方的按钮。