Android 带有弹出窗口的布局设计

Android 带有弹出窗口的布局设计,android,android-layout,android-dialog,android-dialogfragment,android-popupwindow,Android,Android Layout,Android Dialog,Android Dialogfragment,Android Popupwindow,在Android应用程序中,我设计了一款带有线性布局和图像按钮的纸牌游戏。在这个游戏中完成一个关卡后,我必须做下面列出的事情 我必须显示一个类似屏幕的对话框,它应该在屏幕中间弹出。这个弹出窗口应该包含一些背景图像和按钮。弹出窗口应自下而上弹出 显示此弹出窗口时,纸牌游戏父屏幕应模糊 我在Appflood的广告中也看到过类似的效果 你能有效地对此提出一些建议吗 父屏幕 弹出 提前感谢。我有一个非常简单的解决方案(我测试了它-它工作得很好,如我发布的图片所示) 假设您有一个不可见(已消失)的通用

在Android应用程序中,我设计了一款带有线性布局和图像按钮的纸牌游戏。在这个游戏中完成一个关卡后,我必须做下面列出的事情

  • 我必须显示一个类似屏幕的对话框,它应该在屏幕中间弹出。这个弹出窗口应该包含一些背景图像和按钮。弹出窗口应自下而上弹出

  • 显示此弹出窗口时,纸牌游戏父屏幕应模糊

  • 我在Appflood的广告中也看到过类似的效果

    你能有效地对此提出一些建议吗

    父屏幕

    弹出


    提前感谢。

    我有一个非常简单的解决方案(我测试了它-它工作得很好,如我发布的图片所示)

    假设您有一个不可见(已消失)的通用视图,它覆盖整个屏幕(匹配父对象,匹配父对象),并具有红色半透明颜色。
    它将在显示对话框之前可见,并在关闭对话框后再次消失

    因为它不见了,所以你看不到它,也不会浪费任何空间,直到它变得可见

    这种方法要求外部容器是FrameLayout或RelativeLayout(通过正确设置视图:将其锚定到父视图的四个角)。
    我用了一个相对论-因为我真的很喜欢这些容器

    dlg\u red\u bg.xml

    <RelativeLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@android:color/black"
        android:padding="8dp"
        >
        <RelativeLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:background="@android:color/black"
            android:padding="8dp"
            >
            <Button
                android:id="@+id/btnTopLeft"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentTop="true"
                android:layout_alignParentLeft="true"
                android:background="@drawable/ball"
                android:text="Btn 1"
                android:textColor="@android:color/white"
                android:textSize="24sp"
                android:textStyle="bold"
            />
            <Button
                android:id="@+id/btnTopRight"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentTop="true"
                android:layout_toRightOf="@id/btnTopLeft"
                android:background="@drawable/ball"
                android:text="Btn 2"
                android:textColor="@android:color/white"
                android:textSize="24sp"
                android:textStyle="bold"
            />
            <Button
                android:id="@+id/btnBottomLeft"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@id/btnTopLeft"
                android:layout_alignParentLeft="true"
                android:background="@drawable/ball"
                android:text="Btn 3"
                android:textColor="@android:color/white"
                android:textSize="24sp"
                android:textStyle="bold"
            />
            <Button
                android:id="@+id/btnBottomRight"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@id/btnTopRight"
                android:layout_toRightOf="@id/btnBottomLeft"
                android:background="@drawable/ball"
                android:text="Btn 4"
                android:textColor="@android:color/white"
                android:textSize="24sp"
                android:textStyle="bold"
            />
            <Button
                android:id="@+id/btnDialog"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentBottom="true"
                android:layout_centerHorizontal="true"
                android:background="@drawable/ball"
                android:onClick="clickHandler"
                android:text="Dialog"
                android:textColor="@android:color/white"
                android:textSize="24sp"
                android:textStyle="bold"
            />
        </RelativeLayout>
        <View
            android:id="@+id/vwRedOver"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"
            android:layout_alignParentRight="true"
            android:layout_alignParentBottom="true"
            android:background="#8f00"
            android:visibility="gone"
        />
    </RelativeLayout>
    
    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >
    
        <ImageView
            android:id="@+id/popup"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_centerVertical="true"
            android:src="@drawable/popup_background" />
    
        <ImageView
            android:id="@+id/button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_marginRight="39dp"
            android:layout_marginTop="72dp"
            android:onClick="go"
            android:src="@drawable/ok" />
    
        <TextView
        android:id="@+id/question"
        android:text:"level completed"
    
    
    </RelativeLayout>
    
    结果

    单击“对话框”之前

    单击“对话框”后
    注1:由于黑色背景,因此颜色较暗
    注2:您会看到一个黑色边框,因为我在外部RelativeLayout上设置了一个填充-您可以删除它

    单击“确定”或“取消”后,返回初始状态(我的对话框在“确定”上没有做任何有趣的事情-仅用于演示目的)

    试试看:

    不要使用AlertDialog,您可以使用一个普通布局和一个普通类。怎么样

    很简单,您有一个名为“FirstActivity.java”的类,还有一个名为“SecondActivity.java”的类

    FirstActivity

    根据你的喜好设计这个课程

    第二活动

    您将使用ImageView、按钮和文本视图创建自己的弹出窗口,并覆盖布局背景

    Popup_layout.xml

    <RelativeLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@android:color/black"
        android:padding="8dp"
        >
        <RelativeLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:background="@android:color/black"
            android:padding="8dp"
            >
            <Button
                android:id="@+id/btnTopLeft"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentTop="true"
                android:layout_alignParentLeft="true"
                android:background="@drawable/ball"
                android:text="Btn 1"
                android:textColor="@android:color/white"
                android:textSize="24sp"
                android:textStyle="bold"
            />
            <Button
                android:id="@+id/btnTopRight"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentTop="true"
                android:layout_toRightOf="@id/btnTopLeft"
                android:background="@drawable/ball"
                android:text="Btn 2"
                android:textColor="@android:color/white"
                android:textSize="24sp"
                android:textStyle="bold"
            />
            <Button
                android:id="@+id/btnBottomLeft"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@id/btnTopLeft"
                android:layout_alignParentLeft="true"
                android:background="@drawable/ball"
                android:text="Btn 3"
                android:textColor="@android:color/white"
                android:textSize="24sp"
                android:textStyle="bold"
            />
            <Button
                android:id="@+id/btnBottomRight"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@id/btnTopRight"
                android:layout_toRightOf="@id/btnBottomLeft"
                android:background="@drawable/ball"
                android:text="Btn 4"
                android:textColor="@android:color/white"
                android:textSize="24sp"
                android:textStyle="bold"
            />
            <Button
                android:id="@+id/btnDialog"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentBottom="true"
                android:layout_centerHorizontal="true"
                android:background="@drawable/ball"
                android:onClick="clickHandler"
                android:text="Dialog"
                android:textColor="@android:color/white"
                android:textSize="24sp"
                android:textStyle="bold"
            />
        </RelativeLayout>
        <View
            android:id="@+id/vwRedOver"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"
            android:layout_alignParentRight="true"
            android:layout_alignParentBottom="true"
            android:background="#8f00"
            android:visibility="gone"
        />
    </RelativeLayout>
    
    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >
    
        <ImageView
            android:id="@+id/popup"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_centerVertical="true"
            android:src="@drawable/popup_background" />
    
        <ImageView
            android:id="@+id/button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_marginRight="39dp"
            android:layout_marginTop="72dp"
            android:onClick="go"
            android:src="@drawable/ok" />
    
        <TextView
        android:id="@+id/question"
        android:text:"level completed"
    
    
    </RelativeLayout>
    
    
    
    我尝试了自定义对话框,但UI不如完整屏幕中的布局那样有前途,但我使用了线性布局,我希望我必须使用片段布局来实现这一点。谁阻止你转换为相对布局?转换它需要很多更改。。实际上,我将创建一个片段布局并附加布局..我看到:“以编程方式”。如你所愿。。。我不会以编程的方式做那么多的工作。但是我该告诉谁呢?无论如何,您可以将所有布局包含在相对布局或框架布局中,然后使用上面演示的视图方法。
    <style name="Theme.Overlay" parent="android:style/Theme.Translucent">
            <item name="android:windowNoTitle">true</item>
            <item name="android:windowContentOverlay">@null</item>
            <item name="android:backgroundDimEnabled">true</item>
            <item name="android:background">@android:color/transparent</item>
        </style>