安卓的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>
布局如图
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;
}
}
至此,前五个按钮的功能实现。
效果如下
- 普通对话框
- 单选对话框
- 多选对话框
- 进度条对话框
- 消息对话框
五个对话框就是这样的啦
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>
布局如图
- 注意:需要显示的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;
自定义按钮效果
到此六种按钮就全部实现了,有问题的小伙伴可以给我留言,欢迎补充~