0

在此处输入图像描述

有谁知道如何创建一个如上图所示的对话框?

  1. 圆角。
  2. 透明背景。
  3. 没有标题、按钮、边框。
  4. 淡入——延迟5秒——淡出。

*我见过toast、弹出窗口、对话框、警告对话框,这些最适合上面的哪一个?:)


如果可以提供一些代码片段会很好,我对 android 很陌生 :)

4

4 回答 4

1

这根本不是问题。只需创建具有延迟和淡入淡出的第 9 个可绘制补丁,并将其作为对话框的背景。

于 2013-04-16T09:09:27.937 回答
1

对于自定义对话框检查http://www.c-sharpcorner.com/UploadFile/2fd686/androd-dialogs/

 private void createCustomDialog(){
        //Create a dialog object
        final Dialog dialog = new Dialog(MainActivity.this);
        //Set its layout
        dialog.setContentView(R.layout.custom_dialog_layout);
        //Set the title
        dialog.setTitle("This is custom layout");
        //Make it cancelable
        dialog.setCancelable(true);
        //We need to dismiss the dialog so we add a listener to the ok button
        dialog.findViewById(R.id.okButton).setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                dialog.dismiss();
            }
        });

        dialog.show();
    }
}

对于深色 alpha 背景,您可以创建一个可绘制对象。下面的代码将为您提供带圆角的半透明背景。

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"  >
      <item>
           <shape android:shape="rectangle">
                <gradient
                    android:startColor="#AA000000"
                    android:endColor="#AA000000"
                    android:angle="-90"
                    android:type="linear"
                    />
                <corners android:radius="10dp" />
            </shape>
        </item>
</layer-list>

对于自动隐藏部分,您可以使用

Animation anim = new AlphaAnimation(1,0);
anim.setDuration(300);
anim.setStartOffset(5000);
anim.setInterpolator(new LinearInterpolator());
anim.setFillAfter(false);

myView.startAnimation(anim);
于 2013-04-16T09:32:14.750 回答
1

尝试这个

使用您想要的内容创建 XML,然后将透明图像设置为

我正在为您提供图片,请使用此图片

声明 PopupWindow 类型的字段。PopupWindow 弹出窗口;

在这里夸大你的布局

 View v = inflatter.inflate(R.layout.yourlayout, null); 

将布局设置为弹出窗口

v1.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED);
int height1 = v1.getMeasuredHeight();
popup= new PopupWindow(v, (int) (width * 0.8), height1, true);
 popup.showAtLocation(mainlayout, Gravity.CENTER, 0, 0);

mainlayout是您的活动视图组

这是我在我的应用程序中使用的一段代码。

透明背景

示例我在我的应用程序中使用了类似的东西

弹出示例

于 2013-04-16T09:32:47.790 回答
1

自定义 Toast 将为您做所有事情,只需准备您的 xml 并将其设置为 Toast,这是一个示例:

public class CustomToast {

public CustomToast(Context ctx, CharSequence text) {

    LayoutInflater inflater = LayoutInflater.from(ctx);
    View layout = inflater.inflate(R.layout.toast_layout, null);

    TextView txt = (TextView) layout.findViewById(R.id.toastText);
    txt.setText(text);

    Toast myToast = new Toast(ctx.getApplicationContext());
    myToast.setGravity(Gravity.CENTER_VERTICAL, 0, 100);
    myToast.setDuration(Toast.LENGTH_SHORT);
    myToast.setView(layout);
    myToast.show();
    }

}
于 2013-04-16T09:36:36.007 回答