在Android App中,我有一个使用线性布局和图像按钮设计的纸牌游戏。在完成这个游戏的关卡时,我必须做以下事情......
我必须在屏幕中间弹出一个像屏幕一样的对话框。此弹出窗口应该包含一些背景图像和按钮。弹出窗口应该是自下而上的。
显示此弹出窗口时,纸牌游戏父屏幕应该模糊。
我在Appflood展示广告时看到了类似的效果。
你能否有效地提出一些建议。
先谢谢..
答案 0 :(得分:1)
我有一个非常简单的解决方案(我测试了它 - 它运行得很好,如我发布的图片所示)。
想象一下,你有一个不可见的(GONE)通用视图,它覆盖了整个屏幕(match_parent,match_parent)并且具有偏红的半透明颜色。
在解雇之后再次显示Dialog和GONE之前会变得可见。
由于它已经过去了,你不会看到它并且在它变得可见之前它不会浪费任何空间。
此方法要求外部容器为FrameLayout或RelativeLayout(通过正确设置View:将其锚定到四个父角的角落)。
我使用了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();
}
}
}
<强>结果强>
点击&#34;对话框&#34;
之前
点击&#34;对话框&#34;
注1:由于黑色背景,它很暗
注意2:你看到一个黑色边框,因为我在外部RelativeLayout上设置了一个填充 - 你可以删除它
点击&#34; OK&#34;或&#34;取消&#34; - 返回初始状态(我的Dialog没有做任何有趣的事情 - 它仅用于演示目的)
答案 1 :(得分:1)
试试:
不要使用AlertDialog,您可以使用一个普通布局和一个普通类。 ¿如何?
很简单,你有一个名为“FirstActivity.java”的类,还有一个名为“SecondActivity.java”的类。
<强> FirstActivity 强>
按照您的喜好设计这个课程
<强> SecondActivity 强>
您将使用ImageView,按钮和文本视图创建自己的弹出窗口,并且您将覆盖布局背景。
<强> 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" />
.......
<强> Styles.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>
试试看,请说。如果你不明白有人说我。