1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447 |
- 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.SharedPreferences;
- import android.content.res.Configuration;
- import android.graphics.Bitmap;
- import android.graphics.BitmapFactory;
- import android.graphics.Color;
- import android.net.Uri;
- import android.os.Build;
- import android.os.Handler;
- import android.os.Looper;
- import android.provider.Settings;
- import android.text.Editable;
- import android.text.TextWatcher;
- 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.animation.Animation;
- import android.view.animation.AnimationUtils;
- import android.view.animation.DecelerateInterpolator;
- 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.ImageView;
- import android.widget.LinearLayout;
- import android.widget.RadioButton;
- import android.widget.RadioGroup;
- import android.widget.RelativeLayout;
- import android.widget.TextView;
- import android.widget.Toast;
- import androidx.annotation.NonNull;
- 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.BaseApp;
- 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.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.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.OnDialogButtonClickListener;
- import com.kongzue.dialogx.interfaces.OnIconChangeCallBack;
- import com.kongzue.dialogx.interfaces.OnInputDialogButtonClickListener;
- import com.kongzue.dialogx.interfaces.OnMenuItemClickListener;
- import com.kongzue.dialogx.interfaces.OnMenuItemSelectListener;
- 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.ObjectRunnable;
- import com.kongzue.dialogx.util.TextInfo;
- import com.kongzue.dialogx.util.views.ActivityScreenShotImageView;
- import com.kongzue.dialogxdemo.App;
- 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 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);
- 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(new String[]{"添加", "编辑", "删除", "分享"})
- .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;
- }
- })
- .setOnIconChangeCallBack(new OnIconChangeCallBack<PopMenu>(true) {
- @Override
- public int getIcon(PopMenu dialog, int index, String menuText) {
- switch (menuText) {
- case "添加":
- return R.mipmap.img_dialogx_demo_add;
- case "编辑":
- return R.mipmap.img_dialogx_demo_edit;
- case "删除":
- return R.mipmap.img_dialogx_demo_delete;
- case "分享":
- return R.mipmap.img_dialogx_demo_share;
- default:
- return 0;
- }
- }
- });
- }
- });
-
- 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.show(new OnBindView<FullScreenDialog>(customFragment) {
- @Override
- public void onBind(FullScreenDialog dialog, View v) {
-
- }
- });
- }
- });
-
- btnMessageDialog.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- MessageDialog.show("标题", "这里是正文内容。", "确定")
- .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();
- }
- });
-
- 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("按下返回");
- return false;
- }
- });
- runDelayed(new Runnable() {
- @Override
- public void run() {
- WaitDialog.dismiss();
- }
- }, 1500);
- }
- });
-
- 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;
- }
- });
- 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;
- 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) {
- if (dialog.getDialogImpl().imgTab != null) {
- ((ViewGroup) dialog.getDialogImpl().imgTab.getParent()).removeView(dialog.getDialogImpl().imgTab);
- }
- 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();
- } 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) {
- PopTip.show(text);
- return false;
- }
- });
- }
- }
- });
-
- 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("这里是标题", "此对话框演示的是自定义对话框内部布局的效果", "确定", "取消")
- .setCustomView(new OnBindView<MessageDialog>(R.layout.layout_custom_view) {
- @Override
- public void onBind(MessageDialog dialog, View v) {
-
- }
- });
- }
- });
-
- 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) {
-
- }
- });
- }
- });
-
- 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;
- }
- })
- .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.build(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");
- }
- })
- .show();
- }
- });
-
- btnCustomDialog.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- 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(getResources().getColor(R.color.black30))
- //实现完全自定义动画效果
- // .setDialogXAnimImpl(new DialogXAnimInterface<CustomDialog>() {
- // @Override
- // public void doShowAnim(CustomDialog customDialog, ObjectRunnable<Float> animProgress) {
- // 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) {
- // animProgress.run((Float) animation.getAnimatedValue());
- // }
- // });
- // bkgAlpha.start();
- // }
- //
- // @Override
- // public void doExitAnim(CustomDialog customDialog, ObjectRunnable<Float> animProgress) {
- // 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) {
- // animProgress.run((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(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) {
- 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)
- .setMessage("这里是权限确认的文本说明,这是一个演示菜单")
- .setTitle("获得权限标题")
- .setOnMenuItemClickListener(new OnMenuItemSelectListener<BottomMenu>() {
- @Override
- public void onOneItemSelect(BottomMenu dialog, CharSequence text, int index, boolean select) {
- selectMenuIndex = index;
- }
- })
- .setCancelButton("确定", new OnDialogButtonClickListener<BottomDialog>() {
- @Override
- public boolean onClick(BottomDialog 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;
- }
- })
- .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);
- }
- })
- .show();
- }
- });
-
- btnPopnotification.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- notificationIndex++;
- PopNotification.show("这是一条消息 " + notificationIndex)
- .setOnPopNotificationClickListener(new OnDialogButtonClickListener<PopNotification>() {
- @Override
- public boolean onClick(PopNotification dialog, View v) {
- TipDialog.show("点击了通知");
- return false;
- }
- });
- }
- });
-
- 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) {
- PopTip.show("点击回复按钮");
- 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);
- }
- }
- }
|