12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544 |
- package com.kongzue.dialogxdemo.activity;
- import static com.kongzue.dialogx.dialogs.PopTip.tip;
- import android.animation.ValueAnimator;
- import android.content.ActivityNotFoundException;
- import android.content.Context;
- import android.content.Intent;
- import android.content.res.ColorStateList;
- import android.content.res.Configuration;
- import android.graphics.Bitmap;
- import android.graphics.BitmapFactory;
- import android.graphics.Color;
- import android.graphics.Rect;
- import android.net.Uri;
- import android.os.Build;
- import android.os.Bundle;
- import android.os.Handler;
- import android.os.Looper;
- import android.provider.Settings;
- import android.text.InputType;
- import android.view.Gravity;
- import android.view.MotionEvent;
- import android.view.View;
- import android.view.ViewGroup;
- import android.view.WindowInsets;
- import android.view.WindowManager;
- import android.view.inputmethod.InputMethodManager;
- import android.webkit.WebSettings;
- import android.webkit.WebView;
- import android.webkit.WebViewClient;
- import android.widget.AdapterView;
- import android.widget.EditText;
- import android.widget.FrameLayout;
- import android.widget.ImageView;
- import android.widget.LinearLayout;
- import android.widget.RelativeLayout;
- import android.widget.TextView;
- import android.widget.Toast;
- import androidx.annotation.NonNull;
- import androidx.appcompat.app.AppCompatDelegate;
- import androidx.constraintlayout.widget.ConstraintLayout;
- import androidx.recyclerview.widget.LinearLayoutManager;
- import androidx.recyclerview.widget.RecyclerView;
- import com.google.android.material.button.MaterialButton;
- import com.google.android.material.button.MaterialButtonToggleGroup;
- import com.kongzue.baseframework.BaseActivity;
- import com.kongzue.baseframework.interfaces.DarkNavigationBarTheme;
- import com.kongzue.baseframework.interfaces.DarkStatusBarTheme;
- import com.kongzue.baseframework.interfaces.Layout;
- import com.kongzue.baseframework.interfaces.NavigationBarBackgroundColorRes;
- import com.kongzue.baseframework.util.CycleRunner;
- import com.kongzue.baseframework.util.JumpParameter;
- import com.kongzue.dialogx.DialogX;
- import com.kongzue.dialogx.dialogs.BottomDialog;
- import com.kongzue.dialogx.dialogs.BottomMenu;
- import com.kongzue.dialogx.dialogs.CustomDialog;
- import com.kongzue.dialogx.dialogs.FullScreenDialog;
- import com.kongzue.dialogx.dialogs.GuideDialog;
- import com.kongzue.dialogx.dialogs.InputDialog;
- import com.kongzue.dialogx.dialogs.MessageDialog;
- import com.kongzue.dialogx.dialogs.MessageMenu;
- import com.kongzue.dialogx.dialogs.PopMenu;
- import com.kongzue.dialogx.dialogs.PopNotification;
- import com.kongzue.dialogx.dialogs.PopTip;
- import com.kongzue.dialogx.dialogs.TipDialog;
- import com.kongzue.dialogx.dialogs.WaitDialog;
- import com.kongzue.dialogx.interfaces.BaseDialog;
- import com.kongzue.dialogx.interfaces.BottomDialogSlideEventLifecycleCallback;
- import com.kongzue.dialogx.interfaces.DialogLifecycleCallback;
- import com.kongzue.dialogx.interfaces.DialogXAnimInterface;
- import com.kongzue.dialogx.interfaces.DialogXRunnable;
- import com.kongzue.dialogx.interfaces.DialogXStyle;
- import com.kongzue.dialogx.interfaces.MenuItemTextInfoInterceptor;
- import com.kongzue.dialogx.interfaces.OnBackPressedListener;
- import com.kongzue.dialogx.interfaces.OnBackgroundMaskClickListener;
- import com.kongzue.dialogx.interfaces.OnBindView;
- import com.kongzue.dialogx.interfaces.OnBindingView;
- import com.kongzue.dialogx.interfaces.OnDialogButtonClickListener;
- import com.kongzue.dialogx.interfaces.OnIconChangeCallBack;
- import com.kongzue.dialogx.interfaces.OnInputDialogButtonClickListener;
- import com.kongzue.dialogx.interfaces.OnMenuButtonClickListener;
- import com.kongzue.dialogx.interfaces.OnMenuItemClickListener;
- import com.kongzue.dialogx.interfaces.OnMenuItemSelectListener;
- import com.kongzue.dialogx.interfaces.OnSafeInsetsChangeListener;
- import com.kongzue.dialogx.style.IOSStyle;
- import com.kongzue.dialogx.style.KongzueStyle;
- import com.kongzue.dialogx.style.MIUIStyle;
- import com.kongzue.dialogx.style.MaterialStyle;
- import com.kongzue.dialogx.util.InputInfo;
- import com.kongzue.dialogx.util.TextInfo;
- import com.kongzue.dialogx.util.WindowUtil;
- import com.kongzue.dialogxdemo.BuildConfig;
- import com.kongzue.dialogxdemo.R;
- import com.kongzue.dialogxdemo.custom.recycleview.CustomRecycleViewAdapter;
- import com.kongzue.dialogxdemo.fragment.CustomFragment;
- import com.kongzue.dialogxmaterialyou.style.MaterialYouStyle;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.Random;
- @Layout(R.layout.activity_main)
- @DarkStatusBarTheme(true)
- @DarkNavigationBarTheme(true)
- @NavigationBarBackgroundColorRes(R.color.emptyNavBar)
- public class MainActivity extends BaseActivity {
- private ConstraintLayout boxTitle;
- private TextView txtTitle;
- private ImageView btnShare;
- private ImageView splitBody;
- private LinearLayout boxBody;
- private MaterialButtonToggleGroup grpStyle;
- private MaterialButton rdoMaterial;
- private MaterialButton rdoIos;
- private MaterialButton rdoKongzue;
- private MaterialButton rdoMiui;
- private MaterialButton rdoMaterialYou;
- private MaterialButtonToggleGroup grpTheme;
- private MaterialButton rdoAuto;
- private MaterialButton rdoLight;
- private MaterialButton rdoDark;
- private MaterialButtonToggleGroup grpMode;
- private MaterialButton rdoModeView;
- private MaterialButton rdoModeWindow;
- private MaterialButton rdoModeDialogFragment;
- private MaterialButton rdoModeFloatingActivity;
- private MaterialButton btnMessageDialog;
- private MaterialButton btnSelectDialog;
- private MaterialButton btnInputDialog;
- private MaterialButton btnSelectMessageMenu;
- private MaterialButton btnMutiSelectMessageMenu;
- private MaterialButton btnWaitDialog;
- private MaterialButton btnWaitAndTipDialog;
- private MaterialButton btnTipSuccess;
- private MaterialButton btnTipWarning;
- private MaterialButton btnTipError;
- private MaterialButton btnTipProgress;
- private MaterialButton btnPoptip;
- private MaterialButton btnPoptipBigMessage;
- private MaterialButton btnPoptipSuccess;
- private MaterialButton btnPoptipWarning;
- private MaterialButton btnPoptipError;
- private MaterialButton btnPopnotification;
- private MaterialButton btnPopnotificationBigMessage;
- private MaterialButton btnPopnotificationOverlay;
- private MaterialButton btnBottomDialog;
- private MaterialButton btnBottomMenu;
- private MaterialButton btnBottomReply;
- private MaterialButton btnBottomSelectMenu;
- private MaterialButton btnBottomMultiSelectMenu;
- private MaterialButton btnBottomCustomRecycleView;
- private MaterialButton btnCustomMessageDialog;
- private MaterialButton btnCustomInputDialog;
- private MaterialButton btnCustomBottomMenu;
- private MaterialButton btnCustomDialog;
- private MaterialButton btnCustomDialogAlign;
- private MaterialButton btnFullScreenDialogWebPage;
- private MaterialButton btnFullScreenDialogLogin;
- private MaterialButton btnFullScreenDialogFragment;
- private MaterialButton btnContextMenu;
- private TextView btnSelectMenu;
- private MaterialButton btnShowGuide;
- private MaterialButton btnShowGuideBaseView;
- private MaterialButton btnShowGuideBaseViewRectangle;
- private MaterialButton btnShowBreak;
- private MaterialButton btnListDialog;
- private TextView txtVer;
- @Override
- public void initViews() {
- boxTitle = findViewById(R.id.box_title);
- txtTitle = findViewById(R.id.txt_title);
- btnShare = findViewById(R.id.btn_share);
- splitBody = findViewById(R.id.split_body);
- boxBody = findViewById(R.id.box_body);
- grpStyle = findViewById(R.id.grp_style);
- rdoMaterial = findViewById(R.id.rdo_material);
- rdoIos = findViewById(R.id.rdo_ios);
- rdoKongzue = findViewById(R.id.rdo_kongzue);
- rdoMiui = findViewById(R.id.rdo_miui);
- rdoMaterialYou = findViewById(R.id.rdo_material_you);
- grpTheme = findViewById(R.id.grp_theme);
- rdoAuto = findViewById(R.id.rdo_auto);
- rdoLight = findViewById(R.id.rdo_light);
- rdoDark = findViewById(R.id.rdo_dark);
- grpMode = findViewById(R.id.grp_mode);
- rdoModeView = findViewById(R.id.rdo_mode_view);
- rdoModeWindow = findViewById(R.id.rdo_mode_window);
- rdoModeDialogFragment = findViewById(R.id.rdo_mode_dialogFragment);
- rdoModeFloatingActivity = findViewById(R.id.rdo_mode_floatingActivity);
- btnMessageDialog = findViewById(R.id.btn_messageDialog);
- btnSelectDialog = findViewById(R.id.btn_selectDialog);
- btnInputDialog = findViewById(R.id.btn_inputDialog);
- btnSelectMessageMenu = findViewById(R.id.btn_select_menu);
- btnMutiSelectMessageMenu = findViewById(R.id.btn_multiSelect_menu);
- btnWaitDialog = findViewById(R.id.btn_waitDialog);
- btnWaitAndTipDialog = findViewById(R.id.btn_waitAndTipDialog);
- btnTipSuccess = findViewById(R.id.btn_tipSuccess);
- btnTipWarning = findViewById(R.id.btn_tipWarning);
- btnTipError = findViewById(R.id.btn_tipError);
- btnTipProgress = findViewById(R.id.btn_tipProgress);
- btnPoptip = findViewById(R.id.btn_poptip);
- btnPoptipBigMessage = findViewById(R.id.btn_poptip_bigMessage);
- btnPoptipSuccess = findViewById(R.id.btn_poptip_success);
- btnPoptipWarning = findViewById(R.id.btn_poptip_warning);
- btnPoptipError = findViewById(R.id.btn_poptip_error);
- btnPopnotification = findViewById(R.id.btn_popnotification);
- btnPopnotificationBigMessage = findViewById(R.id.btn_popnotification_bigMessage);
- btnPopnotificationOverlay = findViewById(R.id.btn_popnotification_overlay);
- btnBottomDialog = findViewById(R.id.btn_bottom_dialog);
- btnBottomMenu = findViewById(R.id.btn_bottom_menu);
- btnBottomReply = findViewById(R.id.btn_bottom_reply);
- btnBottomSelectMenu = findViewById(R.id.btn_bottom_select_menu);
- btnBottomMultiSelectMenu = findViewById(R.id.btn_bottom_multiSelect_menu);
- btnBottomCustomRecycleView = findViewById(R.id.btn_bottom_custom_recycleView);
- btnCustomMessageDialog = findViewById(R.id.btn_customMessageDialog);
- btnCustomInputDialog = findViewById(R.id.btn_customInputDialog);
- btnCustomBottomMenu = findViewById(R.id.btn_customBottomMenu);
- btnCustomDialog = findViewById(R.id.btn_customDialog);
- btnCustomDialogAlign = findViewById(R.id.btn_customDialogAlign);
- btnFullScreenDialogWebPage = findViewById(R.id.btn_fullScreenDialog_webPage);
- btnFullScreenDialogLogin = findViewById(R.id.btn_fullScreenDialog_login);
- btnFullScreenDialogFragment = findViewById(R.id.btn_fullScreenDialog_fragment);
- btnContextMenu = findViewById(R.id.btn_contextMenu);
- btnSelectMenu = findViewById(R.id.btn_selectMenu);
- btnShowGuide = findViewById(R.id.btn_showGuide);
- btnShowGuideBaseView = findViewById(R.id.btn_showGuideBaseView);
- btnShowGuideBaseViewRectangle = findViewById(R.id.btn_showGuideBaseViewRectangle);
- btnShowBreak = findViewById(R.id.btn_showBreak);
- btnListDialog = findViewById(R.id.btn_listDialog);
- txtVer = findViewById(R.id.txt_ver);
- }
- @Override
- public void initDatas(JumpParameter parameter) {
- getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT_WATCH) {
- getWindow().getDecorView().setOnApplyWindowInsetsListener(new View.OnApplyWindowInsetsListener() {
- @Override
- public WindowInsets onApplyWindowInsets(View v, WindowInsets insets) {
- boxTitle.setPadding(0, insets.getSystemWindowInsetTop(), 0, 0);
- boxBody.setPadding(dip2px(15), dip2px(15), dip2px(15), insets.getSystemWindowInsetBottom() + dip2px(250));
- return insets;
- }
- });
- } else {
- getRootView().setFitsSystemWindows(true);
- }
- refreshUIMode();
- boolean showBreak = parameter.getBoolean("showBreak");
- if (showBreak) {
- txtTitle.setText("显示Dialog时关闭Activity演示");
- MessageDialog.show("提示", "接下来会直接运行一个 WaitDialog,2 秒后直接关闭 Activity,并回到原 Activity,保证程序不会出现 WindowLeaked 错误。\n\n" + "Android 原生 AlertDialog 常出现因 Activity 先于 Dialog 关闭而导致此错误引发程序崩溃。\n\n" + "而使用 DialogX 构建的对话框不仅仅不会出现此问题,还可避免因句柄持续持有导致的内存泄漏。", "开始测试", "取消").setOkButton(new OnDialogButtonClickListener() {
- @Override
- public boolean onClick(BaseDialog baseDialog, View v) {
- WaitDialog.show("请稍后...");
- runDelayed(new Runnable() {
- @Override
- public void run() {
- finish(); //先结束掉本界面
- }
- }, 2000);
- return false;
- }
- }).setCancelButton(new OnDialogButtonClickListener() {
- @Override
- public boolean onClick(BaseDialog baseDialog, View v) {
- finish();
- return false;
- }
- }).setCancelable(false);
- }
- switch (DialogX.implIMPLMode) {
- case VIEW:
- rdoModeView.setChecked(true);
- break;
- case WINDOW:
- rdoModeWindow.setChecked(true);
- break;
- case DIALOG_FRAGMENT:
- rdoModeDialogFragment.setChecked(true);
- break;
- case FLOATING_ACTIVITY:
- rdoModeFloatingActivity.setChecked(true);
- break;
- }
- txtVer.setText("当前版本:" + BuildConfig.VERSION_NAME);
- // //合并处理演示,在 onDismiss 中获取用户选择进行统一处理,以防止编写大量可能在不同选择下都要处理的重复代码
- // MessageDialog.show("Title", "Ask Question", "OK", "NO", "OTHER").setDialogLifecycleCallback(new DialogLifecycleCallback<MessageDialog>() {
- // @Override
- // public void onDismiss(MessageDialog dialog) {
- // /**
- // * dialog.getButtonSelectResult() 支持 MessageDialog 和 BottomDialog
- // * 两种具有选择功能的对话框。
- // * 包含四种状态:
- // * NONE, //未做出选择
- // * BUTTON_OK, //选择了确定按钮
- // * BUTTON_CANCEL, //选择了取消按钮
- // * BUTTON_OTHER //选择了其他按钮
- // */
- // if (dialog.getButtonSelectResult() == BaseDialog.BUTTON_SELECT_RESULT.BUTTON_OK) {
- // MessageDialog.show("Title", "You Select OK Button!", "OK");
- // } else {
- // TipDialog.show("Other Select!", WaitDialog.TYPE.WARNING);
- // }
- // }
- // });
- // //复写事件演示
- // new MessageDialog() {
- // @Override
- // public void onShow(MessageDialog dialog) {
- // //...
- // tip("onShow");
- // }
- //
- // @Override
- // public void onDismiss(MessageDialog dialog) {
- // WaitDialog.show("Please Wait...");
- // if (dialog.getButtonSelectResult() == BUTTON_SELECT_RESULT.BUTTON_OK) {
- // //点击了OK的情况
- // //...
- // } else {
- // //其他按钮点击、对话框dismiss的情况
- // //...
- // }
- // tip("onDismiss");
- // }
- // }
- // .setTitle("Title")
- // .setMessage("message")
- // .setOkButton("OK")
- // .setCancelButton("Cancel")
- // .show();
- }
- //用于模拟进度提示
- private CycleRunner cycleRunner;
- private float progress = 0;
- private int waitId;
- private TextView btnReplyCommit;
- private EditText editReplyCommit;
- private TextView btnCancel;
- private TextView btnSubmit;
- private RelativeLayout boxUserName;
- private EditText editUserName;
- private RelativeLayout boxPassword;
- private EditText editPassword;
- private TextView btnLicense;
- private TextView btnClose;
- private WebView webView;
- private String[] singleSelectMenuText = new String[]{"拒绝", "询问", "始终允许", "仅在使用中允许"};
- private int selectMenuIndex;
- private String[] multiSelectMenuText = new String[]{"上海", "北京", "广州", "深圳"};
- private int[] selectMenuIndexArray;
- private String multiSelectMenuResultCache;
- @Override
- public void setEvents() {
- grpMode.addOnButtonCheckedListener(new MaterialButtonToggleGroup.OnButtonCheckedListener() {
- @Override
- public void onButtonChecked(MaterialButtonToggleGroup group, int checkedId, boolean isChecked) {
- BaseDialog.cleanAll();
- switch (checkedId) {
- case R.id.rdo_mode_view:
- DialogX.implIMPLMode = DialogX.IMPL_MODE.VIEW;
- break;
- case R.id.rdo_mode_window:
- DialogX.implIMPLMode = DialogX.IMPL_MODE.WINDOW;
- break;
- case R.id.rdo_mode_dialogFragment:
- DialogX.implIMPLMode = DialogX.IMPL_MODE.DIALOG_FRAGMENT;
- break;
- case R.id.rdo_mode_floatingActivity:
- DialogX.implIMPLMode = DialogX.IMPL_MODE.FLOATING_ACTIVITY;
- break;
- }
- }
- });
- grpTheme.addOnButtonCheckedListener(new MaterialButtonToggleGroup.OnButtonCheckedListener() {
- @Override
- public void onButtonChecked(MaterialButtonToggleGroup group, int checkedId, boolean isChecked) {
- switch (checkedId) {
- case R.id.rdo_auto:
- DialogX.globalTheme = DialogX.THEME.AUTO;
- break;
- case R.id.rdo_light:
- DialogX.globalTheme = DialogX.THEME.LIGHT;
- break;
- case R.id.rdo_dark:
- DialogX.globalTheme = DialogX.THEME.DARK;
- break;
- }
- }
- });
- grpStyle.addOnButtonCheckedListener(new MaterialButtonToggleGroup.OnButtonCheckedListener() {
- @Override
- public void onButtonChecked(MaterialButtonToggleGroup group, int checkedId, boolean isChecked) {
- DialogX.cancelButtonText = "取消";
- DialogX.titleTextInfo = null;
- DialogX.buttonTextInfo = null;
- switch (checkedId) {
- case R.id.rdo_material:
- DialogX.globalStyle = MaterialStyle.style();
- DialogX.cancelButtonText = "";
- break;
- case R.id.rdo_kongzue:
- DialogX.globalStyle = KongzueStyle.style();
- break;
- case R.id.rdo_ios:
- DialogX.globalStyle = IOSStyle.style();
- break;
- case R.id.rdo_miui:
- DialogX.globalStyle = MIUIStyle.style();
- break;
- case R.id.rdo_material_you:
- DialogX.globalStyle = MaterialYouStyle.style();
- break;
- }
- }
- });
- btnShare.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- openUrl("https://github.com/kongzue/DialogX");
- }
- });
- btnContextMenu.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- PopMenu.show("添加", "编辑", "删除", "分享").disableMenu("编辑", "删除").setIconResIds(R.mipmap.img_dialogx_demo_add, R.mipmap.img_dialogx_demo_edit, R.mipmap.img_dialogx_demo_delete, R.mipmap.img_dialogx_demo_share).setOnMenuItemClickListener(new OnMenuItemClickListener<PopMenu>() {
- @Override
- public boolean onClick(PopMenu dialog, CharSequence text, int index) {
- if (index == 0) {
- dialog.setMenuList(new String[]{"产品A", "产品B", "产品C"});
- return true;
- }
- return false;
- }
- });
- }
- });
- btnSelectMenu.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- PopMenu.show(view, new String[]{"选项1", "选项2", "选项3"}).setOnMenuItemClickListener(new OnMenuItemClickListener<PopMenu>() {
- @Override
- public boolean onClick(PopMenu dialog, CharSequence text, int index) {
- btnSelectMenu.setText(text);
- return false;
- }
- });
- }
- });
- btnFullScreenDialogFragment.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- CustomFragment customFragment = new CustomFragment().setAddButtonClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- btnFullScreenDialogFragment.callOnClick();
- }
- });
- FullScreenDialog.build(new OnBindView<FullScreenDialog>(customFragment) {
- @Override
- public void onBind(FullScreenDialog dialog, View v) {
- }
- }).hideActivityContentView(true).show();
- }
- });
- btnMessageDialog.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- MessageDialog.show("标题", "这里是正文内容。", "确定").onShow(new DialogXRunnable<MessageDialog>() {
- @Override
- public void run(MessageDialog dialog) {
- tip("onShow");
- }
- }).onDismiss(new DialogXRunnable<MessageDialog>() {
- @Override
- public void run(MessageDialog dialog) {
- tip("onDismiss");
- }
- }).setTitleIcon(R.mipmap.img_demo_avatar).setOkButton(new OnDialogButtonClickListener<MessageDialog>() {
- @Override
- public boolean onClick(MessageDialog baseDialog, View v) {
- PopTip.show("点击确定按钮");
- return false;
- }
- });
- }
- });
- btnSelectDialog.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- MessageDialog messageDialog = new MessageDialog("多选对话框", "移除App会将它从主屏幕移除并保留其所有数据。", "删除App", "取消", "移至App资源库").setButtonOrientation(LinearLayout.VERTICAL);
- if (!rdoMiui.isChecked()) {
- messageDialog.setOkTextInfo(new TextInfo().setFontColor(Color.parseColor("#EB5545")).setBold(true));
- }
- messageDialog.show();
- }
- });
- btnInputDialog.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- new InputDialog("标题", "正文内容", "确定", "取消", "正在输入的文字").setInputText("Hello World").setOkButton(new OnInputDialogButtonClickListener<InputDialog>() {
- @Override
- public boolean onClick(InputDialog baseDialog, View v, String inputStr) {
- PopTip.show("输入的内容:" + inputStr);
- return false;
- }
- }).show();
- }
- });
- btnSelectMessageMenu.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- MessageMenu.show(singleSelectMenuText).setShowSelectedBackgroundTips(rdoMiui.isChecked()).setMessage("这里是权限确认的文本说明,这是一个演示菜单").setTitle("获得权限标题").setOnMenuItemClickListener(new OnMenuItemSelectListener<MessageMenu>() {
- @Override
- public void onOneItemSelect(MessageMenu dialog, CharSequence text, int index, boolean select) {
- selectMenuIndex = index;
- }
- }).setCancelButton("确定", new OnMenuButtonClickListener<MessageMenu>() {
- @Override
- public boolean onClick(MessageMenu baseDialog, View v) {
- PopTip.show("已选择:" + singleSelectMenuText[selectMenuIndex]);
- return false;
- }
- }).setSelection(selectMenuIndex);
- }
- });
- btnMutiSelectMessageMenu.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- MessageMenu.show(multiSelectMenuText).setMessage("这里是选择城市的模拟范例,这是一个演示菜单").setTitle("请选择城市").setOnMenuItemClickListener(new OnMenuItemSelectListener<MessageMenu>() {
- @Override
- public void onMultiItemSelect(MessageMenu dialog, CharSequence[] text, int[] index) {
- multiSelectMenuResultCache = "";
- for (CharSequence c : text) {
- multiSelectMenuResultCache = multiSelectMenuResultCache + " " + c;
- }
- selectMenuIndexArray = index;
- }
- }).setOkButton("确定", new OnMenuButtonClickListener<MessageMenu>() {
- @Override
- public boolean onClick(MessageMenu dialog, View v) {
- PopTip.show("已选择:" + multiSelectMenuResultCache);
- return false;
- }
- })
- // .setCancelButton("确定", new OnDialogButtonClickListener<MessageDialog>() {
- // @Override
- // public boolean onClick(MessageDialog baseDialog, View v) {
- // PopTip.show("已选择:" + multiSelectMenuResultCache);
- // return false;
- // }
- // })
- .setSelection(selectMenuIndexArray);
- }
- });
- btnWaitDialog.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- WaitDialog.show("Please Wait!").setOnBackPressedListener(new OnBackPressedListener<WaitDialog>() {
- @Override
- public boolean onBackPressed(WaitDialog dialog) {
- PopTip.show("按下返回").setButton("取消", new OnDialogButtonClickListener<PopTip>() {
- @Override
- public boolean onClick(PopTip dialog, View v) {
- WaitDialog.dismiss();
- return false;
- }
- });
- return false;
- }
- });
- WaitDialog.dismiss(3000);
- }
- });
- btnWaitAndTipDialog.setOnClickListener(new View.OnClickListener() {
- boolean closeFlag = false;
- @Override
- public void onClick(View v) {
- closeFlag = false;
- WaitDialog.show("Please Wait!").setOnBackPressedListener(new OnBackPressedListener<WaitDialog>() {
- @Override
- public boolean onBackPressed(WaitDialog dialog) {
- PopTip.show("按下返回", "关闭").setButton(new OnDialogButtonClickListener<PopTip>() {
- @Override
- public boolean onClick(PopTip baseDialog, View v) {
- closeFlag = true;
- WaitDialog.dismiss();
- return false;
- }
- });
- return false;
- }
- }).setMinWidth(dip2px(200));
- if (!closeFlag) runDelayed(new Runnable() {
- @Override
- public void run() {
- if (!closeFlag) TipDialog.show("完成!", WaitDialog.TYPE.SUCCESS);
- }
- }, 1500 + new Random().nextInt(1000));
- }
- });
- btnTipSuccess.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- TipDialog.show("Success!", WaitDialog.TYPE.SUCCESS);
- }
- });
- btnTipWarning.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- TipDialog.show("Warning!", WaitDialog.TYPE.WARNING);
- }
- });
- btnTipError.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- TipDialog.show("Error!", WaitDialog.TYPE.ERROR);
- }
- });
- btnTipProgress.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- waitId = 0;
- progress = 0;
- WaitDialog.show("假装连接...").setOnBackPressedListener(new OnBackPressedListener<WaitDialog>() {
- @Override
- public boolean onBackPressed(WaitDialog dialog) {
- MessageDialog.show("正在进行", "是否取消?", "是", "否").setOkButton(new OnDialogButtonClickListener() {
- @Override
- public boolean onClick(BaseDialog baseDialog, View v) {
- waitId = -1;
- if (cycleRunner != null) {
- cycleRunner.cancel();
- }
- WaitDialog.dismiss();
- return false;
- }
- });
- return false;
- }
- });
- runOnMainDelayed(new Runnable() {
- @Override
- public void run() {
- if (waitId != 0) {
- return;
- }
- cycleRunner = runOnMainCycle(new Runnable() {
- @Override
- public void run() {
- if (waitId != 0) {
- cycleRunner.cancel();
- return;
- }
- progress = progress + 0.1f;
- if (progress < 1f) {
- WaitDialog.show("假装加载" + ((int) (progress * 100)) + "%", progress);
- } else {
- TipDialog.show("加载完成", WaitDialog.TYPE.SUCCESS);
- cycleRunner.cancel();
- }
- }
- }, 1000, 1000);
- }
- }, 3000);
- }
- });
- btnBottomDialog.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- String s = rdoMaterial.isChecked() ? "你可以向下滑动来关闭这个对话框" : "你可以点击空白区域或返回键来关闭这个对话框";
- new BottomDialog("标题", "这里是对话框内容。\n" + s + "。\n底部对话框也支持自定义布局扩展使用方式。", new OnBindView<BottomDialog>(R.layout.layout_custom_view) {
- @Override
- public void onBind(BottomDialog dialog, View v) {
- v.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- dialog.dismiss();
- PopTip.show("Click Custom View");
- }
- });
- }
- }).setDialogLifecycleCallback(new BottomDialogSlideEventLifecycleCallback<BottomDialog>() {
- @Override
- public boolean onSlideClose(BottomDialog dialog) {
- log("#onSlideClose");
- return super.onSlideClose(dialog);
- }
- @Override
- public boolean onSlideTouchEvent(BottomDialog dialog, View v, MotionEvent event) {
- log("#onSlideTouchEvent: action=" + event.getAction() + " y=" + event.getY());
- return super.onSlideTouchEvent(dialog, v, event);
- }
- }).show();
- }
- });
- btnBottomMenu.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- if (rdoMaterial.isChecked()) {
- //Material 可滑动展开 BottomMenu 演示
- BottomMenu.build()
- .setBottomDialogMaxHeight(0.6f)
- .setMenuList(new String[]{"添加", "查看", "编辑", "删除", "分享", "评论", "下载", "收藏", "赞!", "不喜欢", "所属专辑", "复制链接", "类似推荐", "添加", "查看", "编辑", "删除", "分享", "评论", "下载", "收藏", "赞!", "不喜欢", "所属专辑", "复制链接", "类似推荐"}).setOnIconChangeCallBack(new OnIconChangeCallBack<BottomMenu>(true) {
- @Override
- public int getIcon(BottomMenu bottomMenu, int index, String menuText) {
- switch (menuText) {
- case "添加":
- return R.mipmap.img_dialogx_demo_add;
- case "查看":
- return R.mipmap.img_dialogx_demo_view;
- case "编辑":
- return R.mipmap.img_dialogx_demo_edit;
- case "删除":
- return R.mipmap.img_dialogx_demo_delete;
- case "分享":
- return R.mipmap.img_dialogx_demo_share;
- case "评论":
- return R.mipmap.img_dialogx_demo_comment;
- case "下载":
- return R.mipmap.img_dialogx_demo_download;
- case "收藏":
- return R.mipmap.img_dialogx_demo_favorite;
- case "赞!":
- return R.mipmap.img_dialogx_demo_good;
- case "不喜欢":
- return R.mipmap.img_dialogx_demo_dislike;
- case "所属专辑":
- return R.mipmap.img_dialogx_demo_album;
- case "复制链接":
- return R.mipmap.img_dialogx_demo_link;
- case "类似推荐":
- return R.mipmap.img_dialogx_demo_recommend;
- }
- return 0;
- }
- }).setOnMenuItemClickListener(new OnMenuItemClickListener<BottomMenu>() {
- @Override
- public boolean onClick(BottomMenu dialog, CharSequence text, int index) {
- PopTip.show(text);
- return false;
- }
- }).show();
- // 测试用代码
- // BottomMenu.show("添加", "查看", "编辑")
- // .setIconResIds(R.mipmap.img_dialogx_demo_add,
- // R.mipmap.img_dialogx_demo_view,
- // R.mipmap.img_dialogx_demo_edit
- // );
- } else {
- BottomMenu.show(new String[]{"新标签页中打开", "稍后阅读", "复制链接网址"}).setMessage("http://www.kongzue.com/DialogX").setMenuItemTextInfoInterceptor(new MenuItemTextInfoInterceptor<BottomMenu>() {
- @Override
- public TextInfo menuItemTextInfo(BottomMenu dialog, int index, String menuText) {
- if (index == 2) {
- return new TextInfo().setFontColor(Color.RED).setBold(true);
- }
- return null;
- }
- }).setOnMenuItemClickListener(new OnMenuItemClickListener<BottomMenu>() {
- @Override
- public boolean onClick(BottomMenu dialog, CharSequence text, int index) {
- log("点击了菜单:"+ index + " 文本:" + text);
- PopTip.show(text);
- try {
- throw new RuntimeException("test");
- }catch (Exception e) {
- e.printStackTrace();
- }
- return false;
- }
- }).setIconResIds(R.mipmap.img_dialogx_demo_add,R.mipmap.img_dialogx_demo_view,R.mipmap.img_dialogx_demo_link);
- }
- }
- });
- btnBottomReply.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- BottomDialog.show(new OnBindView<BottomDialog>(rdoDark.isChecked() ? R.layout.layout_custom_reply_dark : R.layout.layout_custom_reply) {
- @Override
- public void onBind(final BottomDialog dialog, View v) {
- btnReplyCommit = v.findViewById(R.id.btn_reply_commit);
- editReplyCommit = v.findViewById(R.id.edit_reply_commit);
- btnReplyCommit.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- dialog.dismiss();
- PopTip.show("提交内容:\n" + editReplyCommit.getText().toString());
- }
- });
- editReplyCommit.postDelayed(new Runnable() {
- @Override
- public void run() {
- showIME(editReplyCommit);
- }
- }, 300);
- }
- }).setAllowInterceptTouch(false);
- }
- });
- btnCustomMessageDialog.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- MessageDialog.show("这里是标题", "此对话框演示的是自定义对话框内部布局的效果", "确定", "取消").setDialogLifecycleCallback(new BottomDialogSlideEventLifecycleCallback<MessageDialog>() {
- @Override
- public void onShow(MessageDialog dialog) {
- super.onShow(dialog);
- dialog.getDialogImpl().txtDialogTip.setPadding(0, dip2px(20), 0, 0);
- }
- }).setCustomView(new OnBindView<MessageDialog>(R.layout.layout_custom_view) {
- @Override
- public void onBind(MessageDialog dialog, View v) {
- }
- }).setMaskColor(Color.TRANSPARENT);
- }
- });
- btnCustomInputDialog.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- InputDialog.show("这里是标题", "此对话框演示的是自定义对话框内部布局的效果", "确定", "取消").setCustomView(new OnBindView<MessageDialog>(R.layout.layout_custom_view) {
- @Override
- public void onBind(MessageDialog dialog, View v) {
- }
- });
- }
- });
- //仅使用渐变动画的实现示例
- DialogXAnimInterface<BottomDialog> alphaDialogAnimation = new DialogXAnimInterface<BottomDialog>() {
- @Override
- //入场动画
- public void doShowAnim(BottomDialog dialog, ViewGroup dialogBodyView) {
- //设置好位置,将默认预设会在屏幕底外部恢复为屏幕内
- dialog.getDialogImpl().boxBkg.setY(dialog.getDialogImpl().boxRoot.getUnsafePlace().top);
- //创建 0f~1f 的数值动画
- ValueAnimator animator = ValueAnimator.ofFloat(0f, 1f);
- animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
- @Override
- public void onAnimationUpdate(ValueAnimator animation) {
- float value = (float) animation.getAnimatedValue();
- //修改背景遮罩透明度
- dialog.getDialogImpl().boxRoot.setBkgAlpha(value);
- //修改内容透明度
- dialog.getDialogImpl().bkg.setAlpha(value);
- }
- });
- //使用真正的动画时长
- animator.setDuration(dialog.getDialogImpl().getEnterAnimationDuration());
- animator.start();
- }
- @Override
- //出场动画
- public void doExitAnim(BottomDialog dialog, ViewGroup dialogBodyView) {
- ValueAnimator animator = ValueAnimator.ofFloat(1f, 0f);
- animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
- @Override
- public void onAnimationUpdate(ValueAnimator animation) {
- float value = (float) animation.getAnimatedValue();
- //这里可以直接修改整体透明度淡出
- dialog.getDialogImpl().boxRoot.setAlpha(value);
- }
- });
- animator.setDuration(dialog.getDialogImpl().getExitAnimationDuration());
- animator.start();
- }
- };
- btnCustomBottomMenu.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- BottomMenu.show(new String[]{"新标签页中打开", "稍后阅读", "复制链接网址"}).setMessage("http://www.kongzue.com/DialogX").setOnMenuItemClickListener(new OnMenuItemClickListener<BottomMenu>() {
- @Override
- public boolean onClick(BottomMenu dialog, CharSequence text, int index) {
- PopTip.show(text);
- return false;
- }
- })
- //.setDialogXAnimImpl(alphaDialogAnimation)
- .setCustomView(new OnBindView<BottomDialog>(R.layout.layout_custom_view) {
- @Override
- public void onBind(BottomDialog dialog, View v) {
- }
- });
- }
- });
- btnShowGuide.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- GuideDialog.show(R.mipmap.img_guide_tip);
- }
- });
- btnShowGuideBaseView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- GuideDialog.show(btnFullScreenDialogLogin, R.mipmap.img_tip_login).setBaseViewMarginTop(-dip2px(30));
- }
- });
- btnShowGuideBaseViewRectangle.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- GuideDialog.show(btnCustomDialogAlign, GuideDialog.STAGE_LIGHT_TYPE.RECTANGLE, R.mipmap.img_tip_login_clicktest).setStageLightFilletRadius(dip2px(5)).setBaseViewMarginTop(-dip2px(30)).setOnBackgroundMaskClickListener(new OnBackgroundMaskClickListener<CustomDialog>() {
- @Override
- public boolean onClick(CustomDialog dialog, View v) {
- toast("点击了外围遮罩");
- return false;
- }
- }).setOnStageLightPathClickListener(new OnDialogButtonClickListener<GuideDialog>() {
- @Override
- public boolean onClick(GuideDialog dialog, View v) {
- toast("点击了原按钮");
- btnCustomDialogAlign.callOnClick();
- return false;
- }
- });
- }
- });
- btnShowBreak.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- jump(MainActivity.class, new JumpParameter().put("showBreak", true).put("fromActivity", getInstanceKey()));
- }
- });
- btnListDialog.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- DialogX.showDialogList(MessageDialog.build().setTitle("提示").setMessage("这是一组消息对话框队列").setOkButton("开始").setCancelButton("取消").setCancelButton(new OnDialogButtonClickListener<MessageDialog>() {
- @Override
- public boolean onClick(MessageDialog dialog, View v) {
- dialog.cleanDialogList();
- return false;
- }
- }), PopTip.build().setMessage("每个对话框会依次显示"), PopNotification.build().setTitle("通知提示").setMessage("直到上一个对话框消失"), InputDialog.build().setTitle("请注意").setMessage("你必须使用 .build() 方法构建,并保证不要自己执行 .show() 方法").setInputText("输入文字").setOkButton("知道了"), TipDialog.build().setMessageContent("准备结束...").setTipType(WaitDialog.TYPE.SUCCESS), BottomDialog.build().setTitle("结束").setMessage("下滑以结束旅程,祝你编码愉快!").setCustomView(new OnBindView<BottomDialog>(R.layout.layout_custom_dialog) {
- @Override
- public void onBind(BottomDialog dialog, View v) {
- ImageView btnOk;
- btnOk = v.findViewById(R.id.btn_ok);
- btnOk.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- dialog.dismiss();
- }
- });
- }
- }));
- }
- });
- btnFullScreenDialogLogin.setOnClickListener(new View.OnClickListener() {
- /**
- * 采用异步加载布局防止卡顿测试
- */
- OnBindView<FullScreenDialog> onBindView;
- @Override
- public void onClick(View v) {
- onBindView = new OnBindView<FullScreenDialog>(R.layout.layout_full_login, true) {
- @Override
- public void onBind(FullScreenDialog dialog, View v) {
- btnCancel = v.findViewById(R.id.btn_cancel);
- btnSubmit = v.findViewById(R.id.btn_submit);
- boxUserName = v.findViewById(R.id.box_userName);
- editUserName = v.findViewById(R.id.edit_userName);
- boxPassword = v.findViewById(R.id.box_password);
- editPassword = v.findViewById(R.id.edit_password);
- btnLicense = v.findViewById(R.id.btn_license);
- initFullScreenLoginDemo(dialog);
- }
- };
- FullScreenDialog.show(onBindView);
- }
- });
- btnFullScreenDialogWebPage.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- FullScreenDialog.show(new OnBindView<FullScreenDialog>(R.layout.layout_full_webview) {
- @Override
- public void onBind(final FullScreenDialog dialog, View v) {
- btnClose = v.findViewById(R.id.btn_close);
- webView = v.findViewById(R.id.webView);
- btnClose.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- dialog.dismiss();
- }
- });
- WebSettings webSettings = webView.getSettings();
- webSettings.setJavaScriptEnabled(true);
- webSettings.setLoadWithOverviewMode(true);
- webSettings.setUseWideViewPort(true);
- webSettings.setSupportZoom(false);
- webSettings.setAllowFileAccess(true);
- webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
- webSettings.setLoadsImagesAutomatically(true);
- webSettings.setDefaultTextEncodingName("utf-8");
- webView.setWebViewClient(new WebViewClient() {
- @Override
- public boolean shouldOverrideUrlLoading(WebView view, String url) {
- try {
- Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
- startActivity(intent);
- } catch (ActivityNotFoundException e) {
- e.printStackTrace();
- }
- return true;
- }
- @Override
- public void onPageFinished(WebView view, String url) {
- super.onPageFinished(view, url);
- }
- });
- webView.loadUrl("https://github.com/kongzue/DialogX");
- }
- }).setBottomNonSafetyAreaBySelf(false);
- }
- });
- btnCustomDialog.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- // //创建一个自定义 View,这里拿 TextView 举例
- // TextView customView = new TextView(me);
- // customView.setText("Custom View");
- // customView.setGravity(Gravity.CENTER);
- // customView.setBackgroundColor(Color.WHITE);
- // //宽度 200dp,满高度
- // customView.setLayoutParams(new ViewGroup.LayoutParams(dip2px(200), ViewGroup.LayoutParams.MATCH_PARENT));
- //
- // //创建对话框
- // CustomDialog.show(new OnBindView<CustomDialog>(customView) {
- // @Override
- // public void onBind(CustomDialog dialog, View v) {
- // //处理沉浸式非安全区(如果需要)
- // dialog.getDialogImpl().boxRoot.setOnSafeInsetsChangeListener(new OnSafeInsetsChangeListener() {
- // @Override
- // public void onChange(Rect unsafeRect) {
- // v.setPadding(unsafeRect.left, unsafeRect.top, unsafeRect.right, unsafeRect.bottom);
- // }
- // });
- // }
- // })
- // //从屏幕左侧显示
- // .setAlign(CustomDialog.ALIGN.LEFT)
- // //关闭默认安全区沉浸式,让自定义 view 能够显示到非安全区外
- // .setEnableImmersiveMode(false)
- // //设置背景遮罩 30% 透明黑
- // .setMaskColor(getResources().getColor(com.kongzue.dialogx.iostheme.R.color.black30));
- CustomDialog.show(new OnBindView<CustomDialog>(R.layout.layout_custom_dialog) {
- @Override
- public void onBind(final CustomDialog dialog, View v) {
- ImageView btnOk;
- btnOk = v.findViewById(R.id.btn_ok);
- btnOk.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- dialog.dismiss();
- }
- });
- }
- }).setMaskColor(getColorS(com.kongzue.dialogx.R.color.black50)).setOnBackgroundMaskClickListener(new OnBackgroundMaskClickListener<CustomDialog>() {
- @Override
- public boolean onClick(CustomDialog dialog, View v) {
- log("点击遮罩层");
- return false;
- }
- }).setMaskColor(getResources().getColor(com.kongzue.dialogx.iostheme.R.color.black30))
- // .setAlign(CustomDialog.ALIGN.LEFT)
- //.setAnimResId(R.anim.anim_right_in, R.anim.anim_right_out)
- //实现完全自定义动画效果
- // .setDialogXAnimImpl(new DialogXAnimInterface<CustomDialog>() {
- // @Override
- // public void doShowAnim(CustomDialog customDialog, ViewGroup dialogBodyView) {
- // Animation enterAnim;
- //
- // int enterAnimResId = com.kongzue.dialogx.R.anim.anim_dialogx_top_enter;
- // enterAnim = AnimationUtils.loadAnimation(me, enterAnimResId);
- // enterAnim.setInterpolator(new DecelerateInterpolator(2f));
- //
- // long enterAnimDurationTemp = enterAnim.getDuration();
- //
- // enterAnim.setDuration(enterAnimDurationTemp);
- // customDialog.getDialogImpl().boxCustom.startAnimation(enterAnim);
- //
- // ValueAnimator bkgAlpha = ValueAnimator.ofFloat(0f, 1f);
- // bkgAlpha.setDuration(enterAnimDurationTemp);
- // bkgAlpha.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
- // @Override
- // public void onAnimationUpdate(ValueAnimator animation) {
- // if (customDialog.getDialogImpl() == null || customDialog.getDialogImpl().boxRoot == null) {
- // return;
- // }
- // customDialog.getDialogImpl().boxRoot.setBkgAlpha((Float) animation.getAnimatedValue());
- // }
- // });
- // bkgAlpha.start();
- // }
- //
- // @Override
- // public void doExitAnim(CustomDialog customDialog, ViewGroup dialogBodyView) {
- // int exitAnimResIdTemp = com.kongzue.dialogx.R.anim.anim_dialogx_default_exit;
- //
- // Animation exitAnim = AnimationUtils.loadAnimation(me, exitAnimResIdTemp);
- // customDialog.getDialogImpl().boxCustom.startAnimation(exitAnim);
- //
- // ValueAnimator bkgAlpha = ValueAnimator.ofFloat(1f, 0f);
- // bkgAlpha.setDuration(exitAnim.getDuration());
- // bkgAlpha.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
- // @Override
- // public void onAnimationUpdate(ValueAnimator animation) {
- // if (customDialog.getDialogImpl() == null || customDialog.getDialogImpl().boxRoot == null) {
- // return;
- // }
- // customDialog.getDialogImpl().boxRoot.setBkgAlpha((Float) animation.getAnimatedValue());
- // }
- // });
- // bkgAlpha.start();
- // }
- // })
- ;
- }
- });
- btnCustomDialogAlign.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- CustomDialog.show(new OnBindView<CustomDialog>(R.layout.layout_custom_dialog_align) {
- private TextView btnSelectPositive;
- @Override
- public void onBind(final CustomDialog dialog, View v) {
- btnSelectPositive = v.findViewById(R.id.btn_selectPositive);
- btnSelectPositive.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- PopTip.show("我知道了");
- dialog.dismiss();
- }
- });
- }
- }).setCancelable(false).setMaskColor(getResources().getColor(com.kongzue.dialogx.iostheme.R.color.black30)).setEnterAnimResId(R.anim.anim_custom_pop_enter).setExitAnimResId(R.anim.anim_custom_pop_exit).setAlignBaseViewGravity(btnCustomDialogAlign, Gravity.TOP | Gravity.CENTER_HORIZONTAL).setBaseViewMarginBottom(-dip2px(45)).show();
- }
- });
- btnPoptip.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- PopTip.show("这是一个提示");
- }
- });
- btnPoptipBigMessage.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- if (rdoIos.isChecked()) {
- PopTip.show(R.mipmap.img_air_pods_pro, "AirPods Pro 已连接").setTintIcon(false).showLong();
- } else {
- PopTip.show(R.mipmap.img_mail_line_white, "邮件已发送", "撤回").setButton(new OnDialogButtonClickListener<PopTip>() {
- @Override
- public boolean onClick(PopTip popTip, View v) {
- //点击“撤回”按钮回调
- toast("邮件已撤回");
- return false;
- }
- }).setTintIcon(true).showLong();
- }
- }
- });
- btnPoptipSuccess.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- PopTip.show("操作已完成").iconSuccess();
- }
- });
- btnPoptipWarning.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- PopTip.show("存储空间不足").setButton("立即清理", new OnDialogButtonClickListener<PopTip>() {
- @Override
- public boolean onClick(PopTip baseDialog, View v) {
- toast("点击了立即清理");
- return false;
- }
- }).iconWarning();
- }
- });
- btnPoptipError.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- PopTip.show("无法连接网络").iconError();
- }
- });
- btnBottomSelectMenu.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- BottomMenu.show(singleSelectMenuText).setShowSelectedBackgroundTips(rdoMiui.isChecked()).setMessage("这里是权限确认的文本说明,这是一个演示菜单").setTitle("获得权限标题").setOnMenuItemClickListener(new OnMenuItemSelectListener<BottomMenu>() {
- @Override
- public void onOneItemSelect(BottomMenu dialog, CharSequence text, int index, boolean select) {
- selectMenuIndex = index;
- }
- }).setCancelButton("确定", new OnMenuButtonClickListener<BottomMenu>() {
- @Override
- public boolean onClick(BottomMenu baseDialog, View v) {
- PopTip.show("已选择:" + singleSelectMenuText[selectMenuIndex]);
- return false;
- }
- }).setSelection(selectMenuIndex);
- }
- });
- btnBottomMultiSelectMenu.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- BottomMenu.show(multiSelectMenuText).setMessage("这里是选择城市的模拟范例,这是一个演示菜单").setTitle("请选择城市").setOnMenuItemClickListener(new OnMenuItemSelectListener<BottomMenu>() {
- @Override
- public void onMultiItemSelect(BottomMenu dialog, CharSequence[] text, int[] index) {
- multiSelectMenuResultCache = "";
- for (CharSequence c : text) {
- multiSelectMenuResultCache = multiSelectMenuResultCache + " " + c;
- }
- selectMenuIndexArray = index;
- }
- }).setOkButton("确定", new OnMenuButtonClickListener<BottomMenu>() {
- @Override
- public boolean onClick(BottomMenu dialog, View v) {
- PopTip.show("已选择:" + multiSelectMenuResultCache);
- return false;
- }
- })
- // .setCancelButton("确定", new OnDialogButtonClickListener<BottomDialog>() {
- // @Override
- // public boolean onClick(BottomDialog baseDialog, View v) {
- // PopTip.show("已选择:" + multiSelectMenuResultCache);
- // return false;
- // }
- // })
- .setSelection(selectMenuIndexArray);
- }
- });
- btnBottomCustomRecycleView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- BottomDialog.build().setCustomView(new OnBindView<BottomDialog>(R.layout.layout_custom_recycleview) {
- @Override
- public void onBind(BottomDialog dialog, View v) {
- List<CustomRecycleViewAdapter.Data> dataArrayList = new ArrayList<>();
- dataArrayList.add(new CustomRecycleViewAdapter.Data("Item Text 1"));
- dataArrayList.add(new CustomRecycleViewAdapter.Data("Item Text 2"));
- dataArrayList.add(new CustomRecycleViewAdapter.Data("Item Text 3"));
- dataArrayList.add(new CustomRecycleViewAdapter.Data("Item Text 4"));
- dataArrayList.add(new CustomRecycleViewAdapter.Data("Item Text 5"));
- dataArrayList.add(new CustomRecycleViewAdapter.Data("Item Text 6"));
- dataArrayList.add(new CustomRecycleViewAdapter.Data("Item Text 7"));
- dataArrayList.add(new CustomRecycleViewAdapter.Data("Item Text 8"));
- dataArrayList.add(new CustomRecycleViewAdapter.Data("Item Text 9"));
- dataArrayList.add(new CustomRecycleViewAdapter.Data("Item Text 10"));
- dataArrayList.add(new CustomRecycleViewAdapter.Data("Item Text 11"));
- dataArrayList.add(new CustomRecycleViewAdapter.Data("Item Text 12"));
- dataArrayList.add(new CustomRecycleViewAdapter.Data("Item Text 13"));
- dataArrayList.add(new CustomRecycleViewAdapter.Data("Item Text 14"));
- RecyclerView recyclerView = (RecyclerView) v;
- LinearLayoutManager layoutManager = new LinearLayoutManager(me);
- recyclerView.setLayoutManager(layoutManager);
- CustomRecycleViewAdapter adapter = new CustomRecycleViewAdapter(dataArrayList);
- adapter.setOnItemClickListener(new AdapterView.OnItemClickListener() {
- @Override
- public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
- PopTip.show("点击了第 " + position + " 个");
- }
- });
- recyclerView.setAdapter(adapter);
- }
- }).setScrollableWhenContentLargeThanVisibleRange(false).show();
- }
- });
- btnPopnotification.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- notificationIndex++;
- PopNotification.build().setMessage("这是一条消息 " + notificationIndex).setOnPopNotificationClickListener(new OnDialogButtonClickListener<PopNotification>() {
- @Override
- public boolean onClick(PopNotification dialog, View v) {
- tip("点击了通知" + dialog.dialogKey());
- return true;
- }
- }).show();
- }
- });
- btnPopnotificationBigMessage.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- Bitmap icon = BitmapFactory.decodeResource(getResources(), R.mipmap.img_demo_avatar);
- notificationIndex++;
- PopNotification.show("这是一条消息 " + notificationIndex, "吃了没?\uD83E\uDD6A").setIcon(icon).setButton("回复", new OnDialogButtonClickListener<PopNotification>() {
- @Override
- public boolean onClick(PopNotification baseDialog, View v) {
- toast("点击回复按钮");
- return false;
- }
- }).showLong();
- }
- });
- btnPopnotificationOverlay.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- DialogX.globalHoverWindow = true;
- //悬浮窗权限检查
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
- if (!Settings.canDrawOverlays(me)) {
- Toast.makeText(me, "使用 DialogX.globalHoverWindow 必须开启悬浮窗权限", Toast.LENGTH_LONG).show();
- Intent intent = new Intent();
- intent.setAction(Settings.ACTION_MANAGE_OVERLAY_PERMISSION);
- startActivity(intent);
- return;
- }
- }
- Bitmap icon = BitmapFactory.decodeResource(getResources(), R.mipmap.img_demo_avatar);
- notificationIndex++;
- Toast.makeText(me, "会在1秒后显示悬浮窗!", Toast.LENGTH_LONG).show();
- //跳转到桌面
- Intent intent = new Intent(Intent.ACTION_MAIN);
- intent.addCategory(Intent.CATEGORY_HOME);
- intent.addFlags(Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED | Intent.FLAG_ACTIVITY_NEW_TASK);
- startActivity(intent);
- //等待一秒后显示
- new Handler(Looper.getMainLooper()).postDelayed(new Runnable() {
- @Override
- public void run() {
- PopNotification.build().setDialogImplMode(DialogX.IMPL_MODE.WINDOW).setTitle("这是一条消息 " + notificationIndex).setIcon(icon).setButton("回复", new OnDialogButtonClickListener<PopNotification>() {
- @Override
- public boolean onClick(PopNotification baseDialog, View v) {
- Intent intent = new Intent(me, MainActivity.class);
- intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
- startActivity(intent);
- return false;
- }
- }).showLong();
- }
- }, 1000);
- }
- });
- }
- int notificationIndex;
- private void initFullScreenLoginDemo(final FullScreenDialog fullScreenDialog) {
- btnCancel.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- fullScreenDialog.dismiss();
- }
- });
- btnCancel.setText("取消");
- btnSubmit.setText("下一步");
- btnLicense.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- PopTip.show("点击用户服务条款");
- }
- });
- btnSubmit.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- if (isNull(editUserName.getText().toString().trim())) {
- hideIME(null);
- TipDialog.show("请输入账号", TipDialog.TYPE.WARNING);
- return;
- }
- boxUserName.animate().x(-getDisplayWidth()).setDuration(300);
- boxPassword.setX(getDisplayWidth());
- boxPassword.setVisibility(View.VISIBLE);
- boxPassword.animate().x(0).setDuration(300);
- editPassword.setFocusable(true);
- editPassword.requestFocus();
- btnCancel.setText("上一步");
- btnCancel.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- boxUserName.animate().x(0).setDuration(300);
- boxPassword.animate().x(getDisplayWidth()).setDuration(300);
- editUserName.setFocusable(true);
- editUserName.requestFocus();
- initFullScreenLoginDemo(fullScreenDialog);
- }
- });
- btnSubmit.setText("登录");
- btnSubmit.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- hideIME(null);
- if (isNull(editPassword.getText().toString().trim())) {
- TipDialog.show("请输入密码", TipDialog.TYPE.WARNING);
- return;
- }
- WaitDialog.show("登录中...");
- runOnMainDelayed(new Runnable() {
- @Override
- public void run() {
- TipDialog.show("登录成功", TipDialog.TYPE.SUCCESS).setDialogLifecycleCallback(new DialogLifecycleCallback<WaitDialog>() {
- @Override
- public void onDismiss(WaitDialog dialog) {
- fullScreenDialog.dismiss();
- }
- });
- }
- }, 2000);
- }
- });
- }
- });
- }
- @Override
- public void onBackPressed() {
- log("#MainActivity.onBackPressed");
- super.onBackPressed();
- }
- public void showIME(EditText editText) {
- if (editText == null) {
- return;
- }
- editText.requestFocus();
- editText.setFocusableInTouchMode(true);
- InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
- imm.showSoftInput(editText, InputMethodManager.RESULT_UNCHANGED_SHOWN);
- }
- @Override
- public void onConfigurationChanged(@NonNull Configuration newConfig) {
- super.onConfigurationChanged(newConfig);
- refreshUIMode();
- }
- /**
- * 刷新亮暗色模式界面变化
- */
- private void refreshUIMode() {
- if ((getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK) == Configuration.UI_MODE_NIGHT_NO) {
- setDarkStatusBarTheme(true);
- } else {
- setDarkStatusBarTheme(false);
- }
- }
- @Override
- protected void onDestroy() {
- super.onDestroy();
- log("MainActivity#onDestroy");
- }
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- // AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);
- super.onCreate(savedInstanceState);
- }
- }
|