Dialog、Toast、SnackBar给用户一个舒服的"提醒"

在Android开发中,用户在进行敏感操作的时候,我们经常会给用户一个友好的提示, 总结了下有这三个提示可以给用户。

1.Dialog

dialog提醒用户时,会暂时终止用户当前的行为,用户必须点击确定或者取消才能进行下一步的操作,带有强制性的提醒.

基本的用法我写在下面。

AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle("标题")
                .setMessage("我是内容")
                .setPositiveButton("确定", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog,
                                        int which) {
                    }
                })
                .setNegativeButton("取消", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog,
                                        int which) {
                    }
                })
                .show();


center

因为Android版本太多了,显示在各个手机上的样式都不太一样,所以大部分情况下我们用的都是自定义的dialog

2.Toast

Toast,也就是大家常说的”吐司”, 给用户一个友好提示,不带有强制性,不会强制用户终止当前的行为,用户可以继续进行下一步的行为.基本的写法

Toast.makeText(this, "我是吐司", Toast.LENGTH_SHORT).show();

在平常的开发中,我们为了防止用户多次点击会做一些判断,下面写一个我平常的写法,先判断是在主线程还是子线程,再判断用户有没有”手抖”多次点击,然后再进行吐司。

    /**
 * Toast的工具类
 *
 * @author zhangbing
 * @Description: (用一句话描述该类作用)
 * @CreateDate: 2017/12/20 14:05
 * @email 314835006@qq.com
 * @UpdateUser: zhangbing
 * @UpdateDate: 2017/12/20 14:05
 * @UpdateRemark:
 */
public class ToastUtils {


    private static Toast toast;

    /**
     * 防止用户连续点击的吐司
     *
     * @Params
     * @author zhangbing
     * @date 2017/12/20 14:06
     * @email 314835006@qq.com
     */
    public static void showToast(final Activity ctx, final String content) {

        if ("main".equals(Thread.currentThread().getName())) { //主线程

            if (toast == null) {
                toast = Toast.makeText(ctx, content, Toast.LENGTH_SHORT);

            } else {
                toast.setText(content);

            }

            toast.show();


        } else { //子线程

            ctx.runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    if (toast == null) {
                        toast = Toast.makeText(ctx, content, Toast.LENGTH_SHORT);

                    } else {
                        toast.setText(content);

                    }

                    toast.show();
                }
            });
        }
    }
}


center

3.SnackBar

SnackBar介于二者之前,他会从指定布局的下面弹出,用户可以理会它,点击确认按钮会消失,也可以不理会他,一段时间后自己消失,基本写法如下:

 Snackbar.make(view, "我是内容", Snackbar.LENGTH_LONG)
                .setAction("确定", new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {


                    }
                })
                .show();


center

参数中的view是指定的布局。

总结:

1.带有强制性的提醒用Dialog。
2.仅仅给个提醒,不影响用户的其他行为用Toast。
3.介于二者之前用SnackBar。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 好的,以下是一个简单的 Android Dialog 的代码示例,您可以在您的 Android 应用程序中使用它: ``` public class MyDialogFragment extends DialogFragment { public static MyDialogFragment newInstance(String title) { MyDialogFragment frag = new MyDialogFragment(); Bundle args = new Bundle(); args.putString("title", title); frag.setArguments(args); return frag; } @Override public Dialog onCreateDialog(Bundle savedInstanceState) { String title = getArguments().getString("title"); AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); builder.setTitle(title) .setMessage("这是一个 Dialog") .setPositiveButton("确定", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { // 确定按钮被点击后的操作 } }) .setNegativeButton("取消", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { // 取消按钮被点击后的操作 } }); return builder.create(); } } ``` 这个 Dialog 中包含一个标题、一些文本信息和两个按钮(确定和取消按钮)。在实际使用中,您需要根据您的需求进行修改。您可以通过调用 `MyDialogFragment.newInstance("Dialog 标题")` 来创建这个 Dialog 的一个实例,并通过调用 `show()` 方法来显示它。 ### 回答2: 好的,下面是一个简单的Android对话框的示例代码: ```java import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.Button; public class MainActivity extends AppCompatActivity { private Button showDialogButton; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); showDialogButton = findViewById(R.id.show_dialog_button); showDialogButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { showCustomDialog(); } }); } private void showCustomDialog() { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("提示"); builder.setMessage("这是一个自定义对话框"); builder.setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // 点击确定按钮的逻辑处理 } }); builder.setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // 点击取消按钮的逻辑处理 dialog.dismiss(); } }); AlertDialog dialog = builder.create(); dialog.show(); } } ``` 这个示例中,我们创建了一个包含一个按钮的布局文件`activity_main.xml`,当用户点击按钮时,会弹出一个标题为"提示",内容为"这是一个自定义对话框"的对话框。对话框中有一个确定按钮和一个取消按钮。当用户点击确定按钮时,可以在`onClick`方法中添加逻辑处理;当用户点击取消按钮时,对话框会被关闭。 以上是一个简单的Android对话框示例,你可以根据自己的需求进行修改和扩展。 ### 回答3: 当然可以!以下是一个简单的Android Dialog示例: 首先,在你的项目中创建一个自定义的对话框布局文件,例如dialog_layout.xml: ```xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <TextView android:id="@+id/dialog_title" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="对话框标题" android:textSize="20sp" android:textColor="@android:color/black" android:padding="10dp"/> <EditText android:id="@+id/dialog_input" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="请输入内容" android:padding="10dp"/> <Button android:id="@+id/dialog_button" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="确定"/> </LinearLayout> ``` 然后,在你的Activity类中创建并显示该对话框: ```java public class MainActivity extends AppCompatActivity { private Dialog dialog; private TextView dialogTitle; private EditText dialogInput; private Button dialogButton; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); dialog = new Dialog(this); dialog.setContentView(R.layout.dialog_layout); dialogTitle = dialog.findViewById(R.id.dialog_title); dialogInput = dialog.findViewById(R.id.dialog_input); dialogButton = dialog.findViewById(R.id.dialog_button); dialogButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String inputText = dialogInput.getText().toString(); Toast.makeText(MainActivity.this, "输入的内容是:" + inputText, Toast.LENGTH_SHORT).show(); dialog.dismiss(); // 关闭对话框 } }); dialog.show(); // 显示对话框 } } ``` 以上代码实现了一个简单的对话框,包含一个标题、一个输入框和一个确定按钮。点击确定按钮后,会弹出一个Toast提示输入的内容。你可以根据自己的需求修改对话框的布局和功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值