概述
一. Selector选择器
通过selector选择器,我们可以更快捷的实现底部导航!
效果如下:
我们如何创建选择器?
- 创建字体颜色改变选择器
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true" android:color="#1D92EE"></item>
<item android:state_checked="false" android:color="#A2A2A2"></item>
</selector>
- 创建图片改变选择器
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true" android:drawable="@drawable/chat1"></item>
<item android:state_checked="false" android:drawable="@drawable/chat2"></item>
</selector>
- 创建两个图标直接调用系统提供的,步骤如下:
1.drawable右键滑到new点击Image Assert
- 弹出窗体按照图进行一下操作:
- 在布局文件中直接使用,将要添加的图片和文字都更换为选择器即可,代码如下:
<RadioGroup
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:orientation="horizontal"
android:id="@+id/di">
<!-- 三个按钮 -->
<RadioButton
android:checked="true"
android:id="@+id/rb1"
android:button="@null"
android:drawableTop="@drawable/selector_pic"
android:textAlignment="center"
android:textColor="@drawable/selector_txt"
android:text="消息"
android:textSize="20sp"
android:layout_weight="1"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<RadioButton
android:id="@+id/rb2"
android:button="@null"
android:drawableTop="@drawable/selector_pic"
android:textAlignment="center"
android:textColor="@drawable/selector_txt"
android:text="联系人"
android:textSize="20sp"
android:layout_weight="1"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<RadioButton
android:id="@+id/rb3"
android:button="@null"
android:drawableTop="@drawable/selector_pic"
android:textAlignment="center"
android:textColor="@drawable/selector_txt"
android:text="动态"
android:textSize="20sp"
android:layout_weight="1"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</RadioGroup>
这样我们就完成了上面的效果图
二. Dialog对话框
对话框类型 | 实现类 | 特殊方法 |
---|---|---|
普通 | AlertDialog.Builder | |
单选 | AlertDialog.Builder | setSingleChoiceItems() |
多选 | AlertDialog.Builder | setMultiChoiceItems() |
日期 | DatePickerDialog | DatePickerDialog(context,DatePickerDialog.OnDateSetListener,year,month,day); |
时间 | TimePickerDialog | TimePickerDialog(context, TimePickerDialog.OnTimeSetListener,时,分,是否24进制); |
水平 | ProgressDialog | setMultiChoiceItems() |
- 1.普通对话框 效果+代码
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 1.构建者
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
// 2.设置属性
builder.setIcon(R.drawable.ic_launcher_background);//设置图标
builder.setTitle("我的名字叫");//设置标题
builder.setMessage("职业大坑");//设置内容
// 设置确认按钮
builder.setPositiveButton("确认", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "你点击了确认", Toast.LENGTH_SHORT).show();
}
});
// 设置取消按钮
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "你点击了取消", Toast.LENGTH_SHORT).show();
}
});
// 3. 使用建造者创建对话框
AlertDialog d = builder.create();
// 4. 显示
d.show();
}
});
- 2.单选对话框 效果+代码
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 设置单选列表内容
final String[] itmes = {"足球","篮球","羽毛球"};
// 1.构建者
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
// 2.设置属性
builder.setIcon(R.drawable.ic_launcher_background);
builder.setTitle("你的运动爱好是");
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "你点击了取消", Toast.LENGTH_SHORT).show();
}
});
// 设置单选列表
builder.setSingleChoiceItems(itmes, 1, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "你喜爱的运动是"+itmes[which], Toast.LENGTH_SHORT).show();
}
});
// 3. 使用建造者创建对话框
AlertDialog d = builder.create();
// 4. 显示
d.show();
}
});
- 3.多选对话框 效果+代码
button3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 设置多选列表内容
final String[] itmes = {"足球","篮球","羽毛球"};
// 设置是否选中
final boolean[] flags = {true,false,false};
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setIcon(R.drawable.ic_launcher_background);
builder.setTitle("你的运动爱好是");
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "你点击了取消", Toast.LENGTH_SHORT).show();
}
});
// 设置多选列表
builder.setMultiChoiceItems(itmes, flags, new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
flags[which] = isChecked;
}
});
AlertDialog d = builder.create();
d.show();
}
});
- 4.自定义对话框 (视为重点) 效果+代码*
button4.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setIcon(R.drawable.ic_launcher_background);
builder.setTitle("= =");
// 获取View
View view = LayoutInflater.from(MainActivity.this).inflate(R.layout.layout, null);
Button close = view.findViewById(R.id.close);
close.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
b.dismiss();
}
});
// 设置自定义的View
builder.setView(view);
b = builder.create();
b.show();
}
});
View视图是自定义的布局 代码如下:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:layout_centerInParent="true"
android:layout_width="match_parent"
android:layout_height="150dp"
android:src="@mipmap/tu"
android:id="@+id/tu"/>
<Button
android:layout_marginTop="20dp"
android:layout_marginRight="30dp"
android:layout_marginLeft="30dp"
android:layout_below="@id/tu"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="关闭对话框"
android:id="@+id/close"/>
</RelativeLayout>
水平进度条和圆形进度条主要的区别:
setProgressStyle方法的ProgressDialog.STYLE_HORIZONTAL可以设置成水平进度条
setProgressStyle方法的ProgressDialog.STYLE_SPINNER可以设置成圆形进度条
- 5.水平进度条对话框 效果+代码
button5.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 实例化进度条对话框对象
final ProgressDialog dialog = new ProgressDialog(MainActivity.this);
// 设置属性
dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);//设置水平加载
dialog.setMax(100);
dialog.setMessage("正在下载");
dialog.show();
// 模拟定时器
final Timer timer = new Timer();
timer.schedule(new TimerTask() {
int progress = 0;
@Override
public void run() {
if (progress == 100) {
dialog.dismiss();//消失
timer.cancel();
}
dialog.setProgress(progress = progress + 20);
}
},0,1000);//0秒后执行,每隔1000毫秒执行一次
}
});
- 6.圆形进度条对话框 效果+代码
button6.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 实例化进度条对话框对象
final ProgressDialog dialog = new ProgressDialog(MainActivity.this);
// 设置属性
dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);//设置转圈圈加载
dialog.setMax(100);
dialog.setMessage("正在下载");
dialog.show();
// 模拟定时器
final Timer timer = new Timer();
timer.schedule(new TimerTask() {
int progress = 0;
@Override
public void run() {
if (progress == 100) {
dialog.dismiss();//消失
timer.cancel();
}
dialog.setProgress(progress = progress + 20);
}
},0,1000);//0秒后执行,每隔1000毫秒执行一次
}
});
- 7.日期选择对话框 效果+代码
button7.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 实例化日历类对象
Calendar calendar = Calendar.getInstance();
new DatePickerDialog(MainActivity.this, new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
Toast.makeText(MainActivity.this, year+"-"+(month+1)+"-"+dayOfMonth, Toast.LENGTH_SHORT).show();
}
},calendar.get(calendar.YEAR),calendar.get(calendar.MONTH),calendar.get(Calendar.DAY_OF_MONTH)).show();
}
});
- 8.时间选择对话框 效果+代码
button8.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 实例化日历类对象
Calendar calendar = Calendar.getInstance();
new TimePickerDialog(MainActivity.this, new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
}
},calendar.get(Calendar.HOUR),calendar.get(Calendar.MINUTE),true).show();
}
});
以上就是我对对话框以及选择器自己掌握的所有知识和内容
第一次做博客感觉很有成就感,我会把我的博客越写越好!!
最后
以上就是炙热纸飞机为你收集整理的Selector选择器的使用+各种样式的对话框的全部内容,希望文章能够帮你解决Selector选择器的使用+各种样式的对话框所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复