1.自定义对话框
- 继承类Dialog
- 布局文件
- 自定义样式
- java代码使用
自定义的对话框显示页面,必须加载到Dialog 内容视图上,selContentView()
package com. imau. cus tomdi alogdemo;
import android. 24PP .Dtalog;
import android. content . Context;
import android. view.L ayoutInflater;
import android. view . View ;
import android. Widget.Button ;
import andro1d.wtidget.ImageView;
inport android.widget.Linearlayout;
import android.widget.TextView;
import androidx.annotation.Dr awableRes;
import androidx.annotati on .NonNull;
pub1ic c1ass CustomDialog extends Dialog ;
public CustomDialog(@NonNu11 Context context) (
super (context);
}
//当创建对话框自动调用;初始化自定文属性:设置
@override
public void create() {
super.create();
//this.setCancelable();
//this . setCanceledonTouchoutside();
}
//定义内部类Builder;
public static class Builder {
//自定义布局文件的组件
private Button yesButton;
private Button noButton;
private ImageView icon;
private TextView tvTitle;
private TextView tvMessage ;
//基本属性
private Context context;
private string title;
private String message;
private int iconId;//R.dri.
//定义事件监听器
private CustomDialog.onclicklistener yesListener ;
private CustomDialog.onClicklistener nolistener;
//按钮标题
private string yesText;
private tring noText;
public Builder (@NonNull Context context) {
this.context=context;
}
public Builder setTitle(String tit1e) {
this.title=title;
return this ;
}
public Builder setMessage(String message) {
this.message = message;
return this ;
}
public Builder setIcon(@Drawab1eRes int iconId) {
this.iconId = iconId;
return this;
}
public Builder setPositiveButton(string text, final CustomDialog . onChicklistener
listener) {
this.yesText =text;
this .yesListener = listener;
return this;
}
public Bui1der setNegativeButton(String text, final CustomDialog . onClickListener
listener) {
this.noText = text;
this .noListener = listener ;
return this ;
}
private void initView(View view,final Dialog dialog){
//设置组件
this. icon=view. findvi ewById(R.id.icon);
this . tvMess age=view. findViewById(R. id. message);
this. tvTitle=view.findvi ewById(R. id.tit1e);
this. yesButton=view. findvi ewById(R. id.yes);
this . noButton=view. findViewById(R, id.no);
if(this .iconId!=0){
icon.setImageResource(this. iconId) ;
}
if (tvMessage! =null){
this JtvMessage. setText (this .message);
}
if(tvTitle!=null){
this . tvTitle ,setText(this .title);
}
//没有设置取消按钮,不显示
if(noText==null){
noButton .setVisibility(View.GONE);
}
If(yesText==null){
yesButton. setVisibi1ity(View. GONE);
}
//设置取消按键文本
if(noText!=null){
noButton ,setText (this.noText) ;
}
//没贸确定按出文本
if(yesText! =null){
yesButton.setText(this .yesText);
}
//设置按凯事件处理
if(yesListener!=null){
yesButton ,setonclicklistener (new View.onClicklistenerO {
@override
pub1ic vo1d onClick(View v) {
yesListener . onClick(dialog) ;
}
});
}
}
if(noListener!=null){
noButton , setonClicklistener(new View.onClickListenerQ {
@override
pubTic void onClick(View 以{
nolistener . onClick(dialog);
}
});
}
public CustomDia1og create() {
final CustomDialog dialog = new CustomDialog(this .context);
//自定义右局文件:布局文件加载路
LayoutInflater inflater =(LayoutInflater)
Context.getsys temservice (Context. LAYOUT INFLATER SERVICE) ;
//布局文件
View view-inflater.inflate(R. layout .my. _dialog ,null);
//将自定义的对话框布局贝面加软到内容视图上
dialog.addContentView(view,new Linearl ayout .LayoutParams(
Linearlayout.layoutparams.MATCH_ PARENT,
Linearlayout.LayoutParams.WRAP.CONTENT));
initVien(view,dialog);
return dialog;
}
}
//定义内部接口:按钮事件的处理用的
interface onClickListener{
void onClick(Dialog dialog);
}
}
2.对话框重点总结
●AlertDialog
- 普通提示对话框setMessage .
- 单选对话框setSingleChoiceltems
- 多选对话框setMultiChoiceltems
- 自定义View对话框setView)
●自定文Dialog类 - 布局dialog.xml太
- 式样styles.xml
- 继承Dialog. 构造方法、onCreate
- 值的传入和传出
3.适度掌握
进度条对话框ProgessDialog
拖动条对话框SeekBarDialog
日期选择对话框DatePickerDialog
时间选择对话框TimePickerDialog
Button:事件处理view OnclickListener
ClstonDialog:事件,诚定处理对的地为处理方法。
4. Toast
. Toast是Android中用来显示显示信息的一种机制,和Dialog不一样的是,Toast是没有焦点的,而且Toast显示的时间有限,过一定的时间就会自动消失。
Android为Toast提供的两个静态的方法最为方便,它们会返回一个Toast对象,如果需要显示,只需要调用show()方法显示即可,下面是这两个方法的签名:
static Toast makeText(Context context,int resId,int duration).
static Toast makeText(Context context, CharSequence text, intduration)
一个上下文对象Context,一个显示的消息来源,一个设置持续时间。
消息来源可以指定String资源,使用<string…/>标签在XML资源文件中定义,还可以指定一个字符串用于消息展示。最后的duration参数设置了Toast的持续时间,一般使用Toast自带的两个整形的常量:LENGTH_LONG(1,时间稍长)、LENGTH_SHORT (o,时间稍短),针对不同的使用场景,选择不用的持续时间。
●默认
●自定义位置
●带图片
●自定义样式
5.Android res下的资源文件
1) 为什么使用资源文件?
更好维护app升级开发等;节省代码维护量。
2) 资源文件有哪些类型?
文字、图片、音频视频、常量值、数组、布局文件等;
3) java代码里如何使用
Resources res= getResources();
res . getcolor(k.color .orchid);
res.getstring(R.string. 290 name);
res. getlayout (R.1ayout activity. main);
res. getDramab le(R.drawabTe.grid);
res . getstringArrayCR. array.arrtest);

190

被折叠的 条评论
为什么被折叠?



