安卓项目实战之强大的Dialog对话框库FlycoDialog-Master
添加依赖
compile 'com.flyco.dialog:FlycoDialog_Lib:1.3.2@aar'
开始实现
效果一:

public void show(View view) {// 进入动画BounceTopEnter mBasIn = new BounceTopEnter();// 退出动画SlideBottomExit mBasOut = new SlideBottomExit();final NormalDialog dialog = new NormalDialog(this);dialog.content("是否确定退出程序?") // (必须)内容文案// .contentGravity(Gravity.CENTER_VERTICAL) // 内容的显示位置,默认为Gravity.CENTER_VERTICAL// .contentTextColor(Color.RED) // 内容文字的颜色// .contentTextSize(10) // 内容文字大小,单位sp// .isTitleShow(true) // 是否显示标题,默认显示.title("我是标题") // (必须)设置标题,如果不设置标题默认为:“温馨提示”// .titleTextColor(Color.RED) // 标题颜色// .titleTextSize(10) // 标题字体大小,单位sp// .titleLineColor(Color.RED) // 设置标题下方分割线的颜色// .dividerColor(Color.BLUE) // 设置分隔按钮的线的颜色// .cornerRadius(5) // 设置弹出的dialog的圆角程度,单位dp,默认值为3// .bgColor(Color.BLACK) // 设置dialog的背景颜色,默认为:#ffffff(白色)// .btnTextColor(Color.RED,Color.BLUE) // 设置按钮上字体的颜色// .btnPressColor(Color.parseColor("#2B2B2B"))// 按钮按下时的颜色.showAnim(mBasIn) //.dismissAnim(mBasOut)//// .widthScale(0.85f)//设置对话框的宽度占屏幕宽度的比例0~1.show();dialog.setOnBtnClickL(new OnBtnClickL() {@Overridepublic void onBtnClick() {Toast.makeText(DialogActivity.this, "点击取消!", Toast.LENGTH_SHORT).show();dialog.dismiss();}},new OnBtnClickL() {@Overridepublic void onBtnClick() {Toast.makeText(DialogActivity.this, "点击确定!", Toast.LENGTH_SHORT).show();dialog.dismiss();}});}
以上注释掉的代码可根据具体的项目需求做相应的调整。
效果二:

可以发现效果二和效果一的区别主要是标题的显示位置和内容显示位置的变化,效果二中都是居中,所以只需在效果一代码的基础上添加一句即可:
.style(NormalDialog.STYLE_TWO)
效果三:

如果要改变按钮的数量和按钮上面的文案,也很简单如下:
final NormalDialog dialog = new NormalDialog(mContext); dialog.content("你今天的抢购名额已用完~")// .btnNum(1) .btnText("继续逛逛")// .showAnim(mBasIn)// .dismissAnim(mBasOut)// .show(); dialog.setOnBtnClickL(new OnBtnClickL() { @Override public void onBtnClick() { T.showShort(mContext, "middle"); dialog.dismiss(); } });
同理如果是三个的话:

final NormalDialog dialog = new NormalDialog(mContext);dialog.content("你今天的抢购名额已用完~")//.style(NormalDialog.STYLE_TWO)// 标题和内容已居中.btnNum(3).btnText("取消", "确定", "继续逛逛")// 注意对应顺序.showAnim(mBasIn)//.dismissAnim(mBasOut)//.show();dialog.setOnBtnClickL(new OnBtnClickL() {@Overridepublic void onBtnClick() {T.showShort(mContext, "left");dialog.dismiss();}},new OnBtnClickL() {@Overridepublic void onBtnClick() {T.showShort(mContext, "right");dialog.dismiss();}},new OnBtnClickL() {@Overridepublic void onBtnClick() {T.showShort(mContext, "middle");dialog.dismiss();}});
效果4:

private void MaterialDialogDefault() {final MaterialDialog dialog = new MaterialDialog(mContext);dialog.content("嗨!这是一个 MaterialDialogDefault. 它非常方便使用,你只需将它实例化,这个美观的对话框便会自动地显示出来。"+ "它简洁小巧,完全遵照 Google 2014 年发布的 Material Design 风格,希望你能喜欢它!^ ^")//.btnText("取消", "确定")//.showAnim(mBasIn)//.dismissAnim(mBasOut)//.show();dialog.setOnBtnClickL(new OnBtnClickL() {//left btn click listener@Overridepublic void onBtnClick() {T.showShort(mContext, "left");dialog.dismiss();}},new OnBtnClickL() {//right btn click listener@Overridepublic void onBtnClick() {T.showShort(mContext, "right");dialog.dismiss();}});}
效果5:

private void MaterialDialogOneBtn() {final MaterialDialog dialog = new MaterialDialog(mContext);dialog.btnNum(1).content("为保证咖啡豆的新鲜度和咖啡的香味,并配以特有的传统烘焙和手工冲。")//.btnText("确定")//.showAnim(mBasIn)//.dismissAnim(mBasOut)//.show();dialog.setOnBtnClickL(new OnBtnClickL() {@Overridepublic void onBtnClick() {T.showShort(mContext, "middle");dialog.dismiss();}});}
效果6:

private void MaterialDialogThreeBtns() {final MaterialDialog dialog = new MaterialDialog(mContext);dialog.isTitleShow(false)//.btnNum(3).content("为保证咖啡豆的新鲜度和咖啡的香味,并配以特有的传统烘焙和手工冲。")//.btnText("确定", "取消", "知道了")//.showAnim(mBasIn)//.dismissAnim(mBasOut)//.show();dialog.setOnBtnClickL(new OnBtnClickL() {//left btn click listener@Overridepublic void onBtnClick() {T.showShort(mContext, "left");dialog.dismiss();}},new OnBtnClickL() {//right btn click listener@Overridepublic void onBtnClick() {T.showShort(mContext, "right");dialog.dismiss();}},new OnBtnClickL() {//middle btn click listener@Overridepublic void onBtnClick() {T.showShort(mContext, "middle");dialog.dismiss();}});}
效果7:

private ArrayList<DialogMenuItem> mMenuItems = new ArrayList<>();mMenuItems.add(new DialogMenuItem("收藏", R.mipmap.ic_winstyle_favor));mMenuItems.add(new DialogMenuItem("下载", R.mipmap.ic_winstyle_download));mMenuItems.add(new DialogMenuItem("分享", R.mipmap.ic_winstyle_share));mMenuItems.add(new DialogMenuItem("删除", R.mipmap.ic_winstyle_delete));mMenuItems.add(new DialogMenuItem("歌手", R.mipmap.ic_winstyle_artist));mMenuItems.add(new DialogMenuItem("专辑", R.mipmap.ic_winstyle_album));
private void NormalListDialog() {final NormalListDialog dialog = new NormalListDialog(mContext, mMenuItems);dialog.title("请选择")//.showAnim(mBasIn)//.dismissAnim(mBasOut)//.show();dialog.setOnOperItemClickL(new OnOperItemClickL() {@Overridepublic void onOperItemClick(AdapterView<?> parent, View view, int position, long id) {T.showShort(mContext, mMenuItems.get(position).mOperName);dialog.dismiss();}});}
效果8:

private void NormalListDialogCustomAttr() {final NormalListDialog dialog = new NormalListDialog(mContext, mMenuItems);dialog.title("请选择")//.titleTextSize_SP(18)//.titleBgColor(Color.parseColor("#409ED7"))//.itemPressColor(Color.parseColor("#85D3EF"))//.itemTextColor(Color.parseColor("#303030"))//.itemTextSize(14)//.cornerRadius(0)//.widthScale(0.8f)//.show(R.style.myDialogAnim);dialog.setOnOperItemClickL(new OnOperItemClickL() {@Overridepublic void onOperItemClick(AdapterView<?> parent, View view, int position, long id) {T.showShort(mContext, mMenuItems.get(position).mOperName);dialog.dismiss();}});}
效果9:

private void NormalListDialogNoTitle() {final NormalListDialog dialog = new NormalListDialog(mContext, mMenuItems);dialog.title("请选择")//.isTitleShow(false)//.itemPressColor(Color.parseColor("#85D3EF"))//.itemTextColor(Color.parseColor("#303030"))//.itemTextSize(15)//.cornerRadius(2)//.widthScale(0.75f)//.show();dialog.setOnOperItemClickL(new OnOperItemClickL() {@Overridepublic void onOperItemClick(AdapterView<?> parent, View view, int position, long id) {T.showShort(mContext, mMenuItems.get(position).mOperName);dialog.dismiss();}});}
效果10:

private void ActionSheetDialog() {final String[] stringItems = {"接收消息并提醒", "接收消息但不提醒", "收进群助手且不提醒", "屏蔽群消息"};final ActionSheetDialog dialog = new ActionSheetDialog(mContext, stringItems, null);dialog.title("选择群消息提醒方式\r\n(该群在电脑的设置:接收消息并提醒)")//.titleTextSize_SP(14.5f)//.show();dialog.setOnOperItemClickL(new OnOperItemClickL() {@Overridepublic void onOperItemClick(AdapterView<?> parent, View view, int position, long id) {T.showShort(mContext, stringItems[position]);dialog.dismiss();}});}
效果11:

private void ActionSheetDialogNoTitle() {final String[] stringItems = {"版本更新", "帮助与反馈", "退出QQ"};final ActionSheetDialog dialog = new ActionSheetDialog(mContext, stringItems, mElv);dialog.isTitleShow(false).show();dialog.setOnOperItemClickL(new OnOperItemClickL() {@Overridepublic void onOperItemClick(AdapterView<?> parent, View view, int position, long id) {T.showShort(mContext, stringItems[position]);dialog.dismiss();}});}
自定义Dialog样式
步骤一:继承BaseDialog(或者BottomBaseDialog或者TopBaseDialog)
步骤二:在onCreateView方法填充布局和查找控件
步骤三:在setUiBeforShow方法中做一些逻辑操作,例如设置数据,设置监听之类
示例如下:
public class CustomBaseDialog extends BaseDialog<CustomBaseDialog> {private TextView tv_cancel;private TextView tv_exit;public CustomBaseDialog(Context context) {super(context);}@Overridepublic View onCreateView() {widthScale(0.85f);showAnim(new Swing());// dismissAnim(this, new ZoomOutExit());View inflate = View.inflate(context, R.layout.dialog_custom_base, null);tv_cancel = ViewFindUtils.find(inflate, R.id.tv_cancel);tv_exit = ViewFindUtils.find(inflate, R.id.tv_exit);inflate.setBackgroundDrawable(CornerUtils.cornerDrawable(Color.parseColor("#ffffff"), dp2px(5)));return inflate;}@Overridepublic boolean setUiBeforShow() {tv_cancel.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {dismiss();}});tv_exit.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {dismiss();}});return false;}
}
例如:
public class CustDialog extends BaseDialog<CustDialog> {public CustDialog(Context context) {super(context);}@Overridepublic View onCreateView() {widthScale(0.3f);
// showAnim(new Swing());dismissAnim(new ZoomOutExit());View inflate = View.inflate(mContext, R.layout.ll, null);// 参数1:背景颜色// 参数2:圆角大小inflate.setBackgroundDrawable(CornerUtils.cornerDrawable(Color.parseColor("#55000000"), dp2px(5)));return inflate;}@Overridepublic void setUiBeforShow() {}
}
布局文件:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><LinearLayoutandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="vertical"android:layout_centerInParent="true"><com.gpf.myglide.AVLoadingIndicatorViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"app:minHeight="30dp"app:minWidth="30dp"app:maxHeight="30dp"app:maxWidth="30dp"android:layout_gravity="center_horizontal"app:indicatorColor="#ff0000"/><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:textSize="14sp"android:textColor="#ffffff"android:layout_marginBottom="5dp"android:layout_gravity="center_horizontal"android:text="加载中..."/>
</LinearLayout></RelativeLayout>
activity中:
private boolean flag = true;// 按钮点击事件public void click(View view) {CustDialog dialog = new CustDialog(this);dialog.setCancelable(false);dialog.setCanceledOnTouchOutside(false);if(flag){dialog.show();flag = false;}else{dialog.dismiss();flag = true;}}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
