在 Android 应用程序中,我有一个设计有线性布局和图像按钮的纸牌游戏。在完成这个游戏的一个关卡时,我必须做以下列出的事情......
我必须显示一个类似屏幕的对话框,它应该在屏幕中间弹出。此弹出窗口应包含一些背景图像和按钮。弹出窗口应该从下向上飞。
显示此弹出窗口时,纸牌游戏父屏幕应模糊。
我在展示 Appflood 的广告时看到了类似的效果。
您能否对此有效地提出一些建议。
父屏幕
带弹出窗口
提前致谢..
在 Android 应用程序中,我有一个设计有线性布局和图像按钮的纸牌游戏。在完成这个游戏的一个关卡时,我必须做以下列出的事情......
我必须显示一个类似屏幕的对话框,它应该在屏幕中间弹出。此弹出窗口应包含一些背景图像和按钮。弹出窗口应该从下向上飞。
显示此弹出窗口时,纸牌游戏父屏幕应模糊。
我在展示 Appflood 的广告时看到了类似的效果。
您能否对此有效地提出一些建议。
提前致谢..
我有一个非常简单的解决方案(我对其进行了测试——效果很好,如我发布的图片所示)。
想象一下,您有一个覆盖整个屏幕(match_parent、match_parent)的不可见(GONE)通用视图,并具有微红色的半透明颜色。
在显示 Dialog 之前它会变为 VISIBLE 并在关闭它后再次 GONE 。
因为它已经消失了,所以你看不到它,它不会浪费任何空间,直到它变得可见。
这种方法要求外部容器是 FrameLayout 或 RelativeLayout(通过正确设置 View:将其锚定到 Parent 的四个角)。
我使用了 RelativeLayout - 因为我真的很喜欢这些容器。
dlg_red_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>
用于突出背景的代码
public void clickHandler(final View v)
{
switch(v.getId())
{
case R.id.btnDialog:
{
vwRedOver.setVisibility(View.VISIBLE);
final AlertDialog.Builder bld = new AlertDialog.Builder(this);
bld.setMessage("Some Message")
.setCancelable(true)
.setPositiveButton
(
"OK",
new DialogInterface.OnClickListener()
{
@Override
public final void onClick
(final DialogInterface dlg, final int id)
{
vwRedOver.setVisibility(View.GONE);
dlg.cancel();
}
}
)
.setNegativeButton
(
"Cancel",
new DialogInterface.OnClickListener()
{
@Override
public final void onClick
(final DialogInterface dlg, final int id)
{
vwRedOver.setVisibility(View.GONE);
dlg.cancel();
}
}
);
bld.create().show();
}
}
}
结果
在点击“对话框”之前
单击“对话框”后
注 1:由于黑色背景,它很暗
注 2:您会看到黑色边框,因为我在外部 RelativeLayout 上设置了填充 - 您可以将其删除
单击“确定”或“取消”后 - 返回初始状态(我的对话框在确定时没有做任何有趣的事情 - 仅用于演示目的)
试试看:
不要使用AlertDialog,可以使用一种普通布局和一种普通类。如何?
这很容易,你有一个名为“FirstActivity.java”的类,还有一个名为“SecondActivity.java”的第二个类。
第一活动
随心所欲地设计这个课程
第二活动
您将使用 ImageView、Buttons 和 textviews 创建您自己的弹出窗口,并且您将覆盖您的布局背景。
Popup_layout.xml
<?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>
显现
使用自定义主题声明 SecondActivity。
......
<activity
android:name="com.example.comandero.SecondActivity"
android:label="@string/app_name"
android:theme="@style/Theme.Overlay" />
.......
样式.xml
在布局上添加新的背景样式。
<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>
试试看,请说我。如果你不明白的话,说我。