【问题标题】:How can I make better custom dialogs?如何制作更好的自定义对话框?
【发布时间】:2016-06-22 09:43:56
【问题描述】:

我正在创建一个游戏,其中我使用了很多对话框。对话框以更简单的设置构成主菜单,然后为其构成整个活动。不过,这些对话框有一个灰色的轮廓,真的很烦人,而且当从一个对话框转到另一个对话框时,它会缩小并随着一个消失而另一个重新出现而爆炸。

如何去除轮廓并让过渡更平滑?如果对话无法实现,还有什么替代方法?我正在使用连接到扩展 Dialog 的 Java 类的自定义布局@

编辑

Java:

public class MenuDialog extends Dialog implements View.OnClickListener {
    Context con;
    Clicker c;
    public MenuDialog(Context c, Clicker game) {
        super(c);
        this.con = c;
        this.c = game;
        Window window = this.getWindow();
        window.setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        show();
    }


    Button stat, gem, cash, shop, powerup, settings;

    @Override
    protected void onCreate(Bundle sis){
        super.onCreate(sis);
        setContentView(R.layout.menu);
        setButtons();

    }

    private void setButtons(){
        stat = (Button) findViewById(R.id.bStats);
        gem = (Button) findViewById(R.id.bGems);

        gem.setOnClickListener(this);
        stat.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.bStats:
                StatDialog sd = new StatDialog(con,c);
                sd.show();
                break;
            case R.id.bGems:
                IAPDialog iapd = new IAPDialog(con, c);
                iapd.show();
                break;
            //other buttons

        }
        dismiss();
    }

}

XML:

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:visibility="visible"
    android:id="@+id/relativeLayout"
    android:gravity="center_horizontal"
    android:background="@drawable/phone_like_bc"
    android:orientation="horizontal">


    <LinearLayout
        android:orientation="vertical"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:id="@+id/linearLayout5"

        android:layout_marginTop="51dp">

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/bStats"
            android:layout_alignParentTop="true"
            android:layout_toLeftOf="@+id/bGems"
            android:background="@drawable/stat_button"
            android:layout_toStartOf="@+id/bGems" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:text="@string/stats"
            android:id="@+id/textView17"
            android:layout_below="@+id/bStats"
            android:layout_alignLeft="@+id/bStats"
            android:layout_alignStart="@+id/bStats" />

        <Button
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:id="@+id/bShop"
            android:background="@drawable/shop"
            android:layout_below="@+id/textView17" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:text="@string/shop"
            android:textAlignment="center"
            android:id="@+id/textView18"
            android:layout_alignTop="@+id/textView16"
            android:layout_alignLeft="@+id/bShop"
            android:layout_alignStart="@+id/bShop" />
    </LinearLayout>

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:id="@+id/linearLayout"
        android:layout_marginTop="51dp"
        >

        <Button
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:background="@drawable/gem"
            android:id="@+id/bGems"
            android:layout_centerVertical="true"
            android:layout_toRightOf="@+id/linearLayout5"
            android:layout_toEndOf="@+id/linearLayout5" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:text="@string/gems"
            android:id="@+id/textView15"
            android:layout_alignBaseline="@+id/textView20"
            android:layout_alignBottom="@+id/textView20"
            android:layout_toLeftOf="@+id/bPowerUp"
            android:layout_toStartOf="@+id/bPowerUp"
            android:layout_gravity="center_horizontal" />

        <Button
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:id="@+id/bPowerUp"
            android:background="@drawable/lightning"
            android:layout_alignTop="@+id/linearLayout"
            android:layout_toLeftOf="@+id/bSettings"
            android:layout_toStartOf="@+id/bSettings" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:text="@string/powerups"
            android:id="@+id/textView16"
            android:layout_alignBaseline="@+id/bSettings"
            android:layout_alignBottom="@+id/bSettings"
            android:layout_toLeftOf="@+id/bSettings"
            android:layout_toStartOf="@+id/bSettings" />
    </LinearLayout>

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="51dp"
        android:gravity="center">

        <Button
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:id="@+id/bCash"
            android:background="@drawable/cash"
            android:layout_alignParentTop="true"
            android:layout_alignParentRight="true"
            android:layout_alignParentEnd="true"
            android:text=" " />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:text="@string/cash"
            android:id="@+id/textView19"
            android:layout_alignParentTop="true"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true"
            android:layout_gravity="center_horizontal" />

        <Button
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:id="@+id/bSettings"
            android:background="@drawable/settings"
            android:layout_below="@+id/bCash"
            android:layout_alignLeft="@+id/bCash"
            android:layout_alignStart="@+id/bCash" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:text="@string/settings"
            android:id="@+id/textView20"
            android:layout_alignBottom="@+id/bCash"
            android:layout_alignLeft="@+id/textView19"
            android:layout_alignStart="@+id/textView19" />
    </LinearLayout>
</LinearLayout>

还有两个 XML 和 java 对话框类。我添加了这两个以表明我已经知道如何添加类,但是我需要知道如何删除对话框的轮廓,并且我需要知道如何平滑两个对话框之间的过渡。他们也有相同的背景。

【问题讨论】:

    标签: java android menu dialog


    【解决方案1】:

    您可以使用 DialogFragments 代替 Dialogs,它们作为 Fragment 工作,您可以自定义它们。在https://developer.android.com/reference/android/app/DialogFragment.html

    上阅读更多关于 Dialog 片段的使用

    如果您不喜欢 Android 文档,您有很多教程可以在 Google 中创建自己的 DialogFragments。

    【讨论】:

    • 当不关闭对话框主时,这看起来确实好多了。在扩展对话框上按下后退按钮时,它们会关闭,因此主要对话框仍然存在。改成 DialogFragment 确实做了很多
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多