9、10.自定义对话框,res资源文件

1.自定义对话框

  1. 继承类Dialog
  2. 布局文件
  3. 自定义样式
  4. 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

  1. 普通提示对话框setMessage .
  2. 单选对话框setSingleChoiceltems
  3. 多选对话框setMultiChoiceltems
  4. 自定义View对话框setView)
    ●自定文Dialog类
  5. 布局dialog.xml太
  6. 式样styles.xml
  7. 继承Dialog. 构造方法、onCreate
  8. 值的传入和传出

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);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值