cain-agent 多 Provider 接入完整指南:5 步接上 deepseek、OpenAI 与自建网关
2026/10/23 7:25:56
java.lang.Object ↳ android.view.Dialog ↳ android.app.AlertDialog ↳ android.app.ProgressDialog ↳ android.app.DatePickerDialog ↳ android.app.TimePickerDialog ↳ android.app.CharacterPickerDialogdialog.show()
dialog.dismiss()
dialog.cancel()
dialog.hide()
setCancelable()
setCanceledOnTouchOutside():
newAlertDialog.Builder(context).setIcon(R.mipmap.ic_launcher).setTitle("系统提示").setMessage("这是一个普通AlertDialog").setNegativeButton("取消",newDialogInterface.OnClickListener(){@OverridepublicvoidonClick(DialogInterfacedialog,intwhich){Toast.makeText(context,"取消",Toast.LENGTH_SHORT).show();}}).setPositiveButton("确定",newDialogInterface.OnClickListener(){@OverridepublicvoidonClick(DialogInterfacedialog,intwhich){Toast.makeText(context,"确定",Toast.LENGTH_SHORT).show();}}).show();finalString[]fruits={"apple","banana","cherry","grape","mango","pear","pineapple","strawberry","watermelon"};newAlertDialog.Builder(context).setTitle("水果列表").setItems(fruits,newDialogInterface.OnClickListener(){@OverridepublicvoidonClick(DialogInterfacedialog,intwhich){Toast.makeText(context,fruits[which],Toast.LENGTH_SHORT).show();}}).show();finalString[]fruits={"apple","banana","cherry","grape","mango","pear","pineapple","strawberry","watermelon"};newAlertDialog.Builder(context).setTitle("水果列表").setSingleChoiceItems(fruits,0,newDialogInterface.OnClickListener(){@OverridepublicvoidonClick(DialogInterfacedialog,intwhich){Toast.makeText(context,fruits[which],Toast.LENGTH_SHORT).show();dialog.dismiss();}}).show();finalString[]fruits={"apple","banana","cherry","grape","mango","pear","pineapple","strawberry","watermelon"};finalboolean[]checkItems={false,false,false,false,false,false,false,false,false};newAlertDialog.Builder(context).setTitle("水果列表").setMultiChoiceItems(fruits,checkItems,newDialogInterface.OnMultiChoiceClickListener(){@OverridepublicvoidonClick(DialogInterfacedialog,intwhich,booleanisChecked){checkItems[which]=isChecked;}}).setPositiveButton("确定",newDialogInterface.OnClickListener(){@OverridepublicvoidonClick(DialogInterfacedialog,intwhich){Stringret="";for(inti=0;i<checkItems.length;i++){if(checkItems[i]){ret+=fruits[i]+" ";}}Toast.makeText(context,ret,Toast.LENGTH_SHORT).show();}}).show();AlertDialog.Builderbuilder=newAlertDialog.Builder(context);AlertDialogalertDialog=builder.create();ViewdialogView=LayoutInflater.from(context).inflate(R.layout.dialog_custom_view,null);dialogView.findViewById(R.id.btnCancle).setOnClickListener(newView.OnClickListener(){@OverridepublicvoidonClick(Viewv){alertDialog.dismiss();}});dialogView.findViewById(R.id.btnConfirm).setOnClickListener(newView.OnClickListener(){@OverridepublicvoidonClick(Viewv){Toast.makeText(context,"确定",Toast.LENGTH_SHORT).show();alertDialog.dismiss();}});alertDialog.setView(dialogView);alertDialog.setCancelable(false);//按返回键是否取消alertDialog.setCanceledOnTouchOutside(false);//点击Dialog外部是否取消alertDialog.show();ProgressDialog.show(MainActivity.this,"提示","正在加载。。。",false,true);progressDialog = new ProgressDialog(context); progressDialog.setTitle("提示"); progressDialog.setMessage("正在加载。。。"); progressDialog.setCancelable(true); progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); progressDialog.setIndeterminate(false);//是否显示进度,必须设置为false才显示 progressDialog.show();Calendarcalendar=Calendar.getInstance();newDatePickerDialog(context,newDatePickerDialog.OnDateSetListener(){@OverridepublicvoidonDateSet(DatePickerview,intyear,intmonth,intdayOfMonth){Stringret="";ret=year+"年"+(month+1)+"月"+dayOfMonth+"日";Toast.makeText(context,ret,Toast.LENGTH_SHORT).show();}},calendar.get(Calendar.YEAR),calendar.get(Calendar.MONTH),calendar.get(Calendar.DAY_OF_MONTH)).show();Calendarcalendar=Calendar.getInstance();newTimePickerDialog(context,android.app.AlertDialog.THEME_HOLO_LIGHT,newTimePickerDialog.OnTimeSetListener(){@OverridepublicvoidonTimeSet(TimePickerview,inthourOfDay,intminute){Stringret="";ret=hourOfDay+"时"+minute+"分";Toast.makeText(context,ret,Toast.LENGTH_SHORT).show();}},calendar.get(Calendar.HOUR_OF_DAY),calendar.get(Calendar.MINUTE),true).show();dialog常用样式
<stylename="DialogStyle"><!--是否显示Title --> <item name="android:windowNoTitle">true</item> <!--Dialog中Window的背景颜色--> <item name="android:windowBackground">@android:color/transparent</item> <!--Dialog背景颜色--> <item name="android:background">@android:color/transparent</item> <!--去除边框--> <item name="android:windowFrame">@null</item> <!--Dialog外部区域是否模糊--> <item name="android:backgroundDimEnabled">true</item> <!--Dialog外部区域模糊度,当值为1 时,除了dialog以外的部分全黑--> <item name="android:backgroundDimAmount">0.6</item> <!--是否浮现在activity之上--> <item name="android:windowIsFloating">true</item> <!--是否半透明--> <item name="android:windowIsTranslucent">true</item> <!--竖屏状态下的dialog最小宽度--> <!-- <item name="android:windowMinWidthMinor">100%</item>--> <!--横屏状态下的dialog最小宽度--> <!-- <item name="android:windowMinWidthMajor">100%</item>--></style><stylename="DialogStyle.Animation"parent="DialogStyle"><!-- dialog动画--> <item name="android:windowAnimationStyle">@style/DialogAnim</item></style>设置Dialog动画
<?xml version="1.0" encoding="utf-8"?><!--进入动画--><translatexmlns:android="http://schemas.android.com/apk/res/android"android:duration="200"android:fromYDelta="100%"android:interpolator="@android:anim/accelerate_interpolator"android:toXDelta="0"/><?xml version="1.0" encoding="utf-8"?><!--进入动画--><translatexmlns:android="http://schemas.android.com/apk/res/android"android:duration="200"android:fromYDelta="0%"android:interpolator="@android:anim/accelerate_interpolator"android:toYDelta="100%"/><stylename="DialogAnim"parent="android:Animation"><item name="android:windowEnterAnimation">@anim/anim_enter</item> <item name="android:windowExitAnimation">@anim/anim_exit</item></style>自定义Dialog:
classQQDialog(context:Context):Dialog(context,R.style.DialogStyle_Animation),View.OnClickListener{privatelateinitvarvideo:TextViewprivatelateinitvarphoto:TextViewprivatelateinitvarcancel:TextViewoverridefunonCreate(savedInstanceState:Bundle?){super.onCreate(savedInstanceState)setContentView(R.layout.dialog_qq)window?.apply{setLayout(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.WRAP_CONTENT)//设置宽高setGravity(Gravity.BOTTOM)//设置显示位置}setCanceledOnTouchOutside(true)//点击外部区域是否取消setCancelable(true)//按返回键是否取消initViews()}privatefuninitViews(){video=findViewById(R.id.video)photo=findViewById(R.id.photo)cancel=findViewById(R.id.cancel)video.setOnClickListener(this)photo.setOnClickListener(this)cancel.setOnClickListener(this)}overridefunonClick(view:View){when(view.id){R.id.video->{dismiss()mOnDialogClickListener?.onVideoClick()}R.id.photo->{dismiss()mOnDialogClickListener?.onPhotoClick()}R.id.cancel->dismiss()}}interfaceOnDialogClickListener{funonVideoClick()funonPhotoClick()}privatevarmOnDialogClickListener:OnDialogClickListener?=nullfunsetOnDialogClickListener(onDialogClickListener:OnDialogClickListener){mOnDialogClickListener=onDialogClickListener}}使用
valqqDialog=QQDialog(mContext)qqDialog.setOnDialogClickListener(object:QQDialog.OnDialogClickListener{overridefunonVideoClick(){ToastUtils.show("点击了视频")}overridefunonPhotoClick(){ToastUtils.show("点击了相册")}})qqDialog.show()