安卓的6种按钮实现方式(基础)

实验之前先创建一个新的Activity--->MyDialog.java
相应的布局文件叫My_dialog.xml
创建方式为在包上右键=>new=>activity=>empty activity

对主页面进行一下布局(我使用的线性布局)

activity_main.xml代码如下:

activity_main.xml

<LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:background="#B3CF91">

        <Button
            android:id="@+id/dialog_btn1"
            android:layout_width="200dp"
            android:layout_height="60dp"
            android:text="普通对话框"
            android:textSize="26dp"
            android:background="#9F2196F3"
            android:layout_marginLeft="110dp"
            android:layout_marginTop="20dp"/>

        <Button
            android:id="@+id/dialog_btn2"
            android:layout_width="200dp"
            android:layout_height="60dp"
            android:text="单选对话框"
            android:textSize="26dp"
            android:background="#9F2196F3"
            android:layout_marginLeft="110dp"
            android:layout_marginTop="40dp"/>

        <Button
            android:id="@+id/dialog_btn3"
            android:layout_width="200dp"
            android:layout_height="60dp"
            android:text="多选对话框"
            android:textSize="26dp"
            android:background="#9F2196F3"
            android:layout_marginLeft="110dp"
            android:layout_marginTop="40dp"/>

        <Button
            android:id="@+id/dialog_btn4"
            android:layout_width="200dp"
            android:layout_height="60dp"
            android:text="进度条对话框"
            android:textSize="26dp"
            android:background="#9F2196F3"
            android:layout_marginLeft="110dp"
            android:layout_marginTop="40dp"/>

        <Button
            android:id="@+id/dialog_btn5"
            android:layout_width="200dp"
            android:layout_height="60dp"
            android:text="消息对话框"
            android:textSize="26dp"
            android:background="#9F2196F3"
            android:layout_marginLeft="110dp"
            android:layout_marginTop="40dp"/>

        <Button
            android:id="@+id/dialog_btn6"
            android:layout_width="200dp"
            android:layout_height="60dp"
            android:text="自定义对话框"
            android:textSize="26dp"
            android:background="#9F2196F3"
            android:layout_marginLeft="110dp"
            android:layout_marginTop="40dp"/>


    </LinearLayout>

布局如图

1.png

MainActivity.java

接下来在MainActivity中实现按钮点击的效果

  • 首先声明六个按钮,再将这六个按钮注册
private Button btn1,btn2,btn3,btn4,btn5,btn6;

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //初始化
        btn1 = findViewById(R.id.dialog_btn1);
        btn2 = findViewById(R.id.dialog_btn2);
        btn3 = findViewById(R.id.dialog_btn3);
        btn4 = findViewById(R.id.dialog_btn4);
        btn5 = findViewById(R.id.dialog_btn5);
        btn6 = findViewById(R.id.dialog_btn6);

        //注册监听器
        btn1.setOnClickListener(this);
        btn2.setOnClickListener(this);
        btn3.setOnClickListener(this);
        btn4.setOnClickListener(this);
        btn5.setOnClickListener(this);
        btn6.setOnClickListener(this);

    }

对页面上的按钮进行点击事件的监听,继续写如下代码

这里使用switch,更加清晰

btn6是自定义按钮,先不写入case

@Override
    public void onClick(View v) {
        switch (v.getId())
        {
            case R.id.dialog_btn1:
                AlertDialog.Builder builder1 = new AlertDialog.Builder(MainActivity.this);
                builder1.setTitle("Dialog对话框");// 设置标题
                // builder.setIcon(R.drawable.ic_launcher);//设置图标
                builder1.setMessage("你确定要退出?");// 为对话框设置内容
                // 为对话框设置取消按钮
                builder1.setNegativeButton("取消", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {

                    }
                });
                builder1.setPositiveButton("确定", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {

                    }
                });
                builder1.create().show();// 使用show()方法显示对话框
                break;
            case R.id.dialog_btn2:
                AlertDialog.Builder builder2 = new AlertDialog.Builder(MainActivity.this);
                builder2.setIcon(R.mipmap.ic_launcher);
                builder2.setTitle("请选择性别");
                builder2.setSingleChoiceItems(new String[]{"男", "女"}, -1, new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {

                    }
                });
                builder2.create().show();
                break;
            case R.id.dialog_btn3:
                AlertDialog.Builder builder3 = new AlertDialog.Builder(MainActivity.this)
                        .setIcon(R.mipmap.ic_launcher)
                        .setPositiveButton("确定",null)
                        .setTitle("请选择爱好")
                        .setMultiChoiceItems(new String[]{"旅游", "美食", "写代码"}, null, null);
                builder3.create().show();
                break;
            case R.id.dialog_btn4:
                ProgressDialog progressDialog = new ProgressDialog(this);
                progressDialog.setTitle("进度条对话框");
                progressDialog.setIcon(R.mipmap.ic_launcher);
                progressDialog.setMessage("正在下载,请稍后...");
                progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
                progressDialog.show();
                break;
            case R.id.dialog_btn5:
                Toast.makeText(this,"Hello,Thost!",Toast.LENGTH_LONG).show();
                break;
            case R.id.dialog_btn6:
                //先不写
                break;
        }
    }

至此,前五个按钮的功能实现。
效果如下

  • 普通对话框
    image-20200313184855408.png
  • 单选对话框
    image-20200313184834236.png
  • 多选对话框
    image-20200313184918562.png
  • 进度条对话框
    image-20200313185924694.png
  • 消息对话框
    image-20200313185924694.png

五个对话框就是这样的啦

my_dialog.xml

然后我们来看一看自定义对话框

现在res-->layout中新建一个xml,叫my_dialog.xml

代码如下

<LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:ignore="MissingConstraints">

        <LinearLayout
            android:layout_width="249dp"
            android:layout_height="407dp"
            android:background="#86D5FA"
            android:orientation="vertical">

            <Button
                android:id="@+id/diy_btn"
                android:layout_width="50dp"
                android:layout_height="69dp"
                android:layout_marginStart="180dp"
                android:layout_marginTop="20dp"
                android:width="40dp"
                android:height="40dp"
                android:text="X"
                android:textSize="27dp" />

            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="40dp"
                android:width="150dp"
                android:paddingStart="20dp"
                android:text="邀请好友得奖金32元"
                android:textColor="#fff"
                android:textSize="20dp" />

        </LinearLayout>
    </LinearLayout>

布局如图

image-20200313190323507.png

  • 注意:需要显示的Dialog放在左上角

MyDialog.java

接着,创建一个叫MyDialog的Activity类,代码如下

import androidx.annotation.NonNull;

public class MyDialog extends Dialog {

    public MyDialog(@NonNull Context context) {
        super(context);
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);//去除标题
        setContentView(R.layout.my_dialog);//引入自定义对话框布局

        Button button = findViewById(R.id.diy_btn);

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                dismiss();
            }
        });
    }
}

补全MainActivity.java

最后,补全MainActivity类中的case R.id.dialog_btn6:

case R.id.dialog_btn6:

    MyDialog myDialog = new MyDialog(this);

    myDialog.show();
break;

自定义按钮效果

image-20200313192715191.png

到此六种按钮就全部实现了,有问题的小伙伴可以给我留言,欢迎补充~

Last modification:October 25th, 2020 at 11:17 am
如果觉得我的文章对你有用,请随意赞赏