底部弹出框BottomDialog

本文介绍了一个用于Android开发的BottomDialog库,该库简化了从屏幕底部弹出对话框的操作,并提供了丰富的自定义选项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

BottomDialog

日常需求中通常都会有这样的需求,点击按钮会从底部弹出一个对话框,选择操作。例如分享或者更换头像弹出对话框。

因此抽空将此功能封装成库,方便以后引用。

ScreenShot

图一图二

图三图四

Import

Maven

Step 1. Add the JitPack repository to your build file
<repositories>
    <repository>
        <id>jitpack.io</id>
        <url>https://jitpack.io</url>
    </repository>
</repositories>
Step 2. Add the dependency
<dependency>
    <groupId>com.github.SmartCyl</groupId>
    <artifactId>BottomDialog</artifactId>
    <version>1.0.4</version>
</dependency>

Or Gradle

Step 1. Add the JitPack repository to your build file
Add it in your root build.gradle at the end of repositories:
allprojects {
    repositories {
        ...
        maven { url 'https://jitpack.io' }
    }
}
Step 2. Add the dependency
dependencies {
    compile 'com.github.SmartCyl:BottomDialog:1.0.4'
}

Usage

当不需要图片时,Item的构造器第一个参数传0 :new Item(0,”name”)

1、使用前3张图中类似的效果直接使用自带的layout文件即可。

new SmartDialog().init(context).items(List<Item>).display();

默认布局 APIs

方法说明默认值
backgroundRes设置背景资源,如圆角(backgroundResEnable为true时生效)R.drawable.shape_round_corner
backgroundResEnable是否启用设置背景资源true
onItemClickReciclerView的单击监听-
onItemLongClickReciclerView的长按监听-
title设置标题标题
titleVisible是否显示标题true
titleGravity标题显示位置Gravity.CENTER
titleColor标题颜色727272
titleSize标题字体大小16
cancelVisible是否显示取消按钮true
cancel隐藏Dialog-
itemOrientationRecyclerView子项布局方式(垂直[图二]/水平[图一])LinearLayout.VERTICAL
recyclerViewOrientationRecyclerView排布方式(垂直/Grid[图二])BaseSmartDialog.ORIENTATION_VERTICAL
spanCount列数(recyclerViewOrientation为GRID时生效)3
adapter设置适配器SmartAdapter

2、使用自定义布局(如图四)

new SmartDialog().init(context).layoutRes(layout).display();

共用 APIs

方法说明默认值
items设置数据源-
display显示Dialog-
layoutRes设置自定义布局-
dialogHeight设置Dialog高度包裹内容
dialogWidth设置Dialog宽度屏幕宽度(若宽度不铺满屏幕,调用padding(0)即可)
padding(padding)设置内边距30
padding(l,t,r,b)设置内边距30
gravityDialog的位置Gravity.BOTTOM
animEnable是否启用Dialog从底部弹出的动画true
animDurationDialog从底部弹出动画持续时间500ms
cancelableOutside点击Dialog外部是否可隐藏Dialogtrue
onOutsideClick点击Dialog外部区域事件监听(用于点击外部后判断做什么操作,设置后点击外部Dialog不会自动消失,需要调用dialog.cancel())-
dimAmount设置阴影部分的灰暗度0.5F
alpha设置Dialog透明度1F
bindViewListener绑定视图回调(可用于自定义layout的点击事件监听)-

示例(默认布局)

new SmartDialog().init(this)
    .items(items) // 设置数据源
    .title("标题")
    .onItemClick(new OnItemClickListener() {
        @Override
        public void onItemClick(int position, Item item) {
            // 单击回调
        }
    })
    .onItemLongClick(new OnItemLongCli() {
        @Override
        public void onItemLongClick(int position, Item item){
            // 长按回调
        }
    })
    .onOutsideClick(new OutsideClickListener() {
        @Override
        public void outsideClick(boolean isOutside, BaseSmartDialog dialog) {
            dialog.cancle(); // 使对话框消失
            // 点击外部区域监听                 
        }
    })
    .backgroundResEnable(true)
    .animEnable(false)
    .cancelVisible(true)
    .titleVisible(true)
    .cancelableOutside(true)
    .titleGravity(Gravity.CENTER)
    .gravity(Gravity.CENTER)
    .titleColor(R.color.colorAccent)
    .titleSize(20)
    .padding(20)
    .itemOrientation(LinearLayout.VERTICAL)
    .animDuration(400)
    .display();

示例(自定义布局)

new SmartDialog().init(this)
    .items(items) // 设置数据源
    .onOutsideClick(new OutsideClickListener() {
        @Override
        public void outsideClick(boolean isOutside, BaseSmartDialog dialog) {
            dialog.cancle(); // 使对话框消失
            // 点击外部区域监听                 
        }
    })
    // 为自定义布局的子控件设监听
    .bindViewListener(new BindViewListener() {
        @Override
        public void bind(View dialogView, final BaseSmartDialog dialog) {
            // xxx为自定义layout的id
            dialogView.findViewById(R.id.xxx).setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    // do something
                    dialog.cancel();
                }
            });
        }
    });
    .animEnable(false)
    .cancelableOutside(true)
    .gravity(Gravity.CENTER)
    .padding(20)
    .animDuration(400)
    .display();

github地址

BottomDialog 一个自定义的从底部弹出的dialog,仿照微博的分享弹框.支持横向、纵向、网格等布局导入compile 'top.zibin:BottomDialog:1.0.4'使用BottomDialog 只需要一句代码即可轻松显示底部弹框创建Menu<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android">     <item         android:id="@ id/moments"         android:icon="@mipmap/ic_share_moments"         android:title="@string/moments" /> </menu>设置 Layout 样式new BottomDialog(MainActivity.this)     .title(R.string.title_item)             //设置标题     .layout(BottomDialog.GRID)              //设置内容layout,默认为线性(LinearLayout)     .orientation(BottomDialog.VERTICAL)     //设置滑动方向,默认为横向     .inflateMenu(R.menu.menu_share)         //传人菜单内容     .itemClick(new OnItemClickListener() {  //设置监听         @Override         public void click(Item item) {             Toast.makeText(MainActivity.this, getString(R.string.share_title)   item.getTitle(), Toast.LENGTH_LONG).show();         }     })     .show();Listener 事件监听方式调用new BottomDialog(context)     .title(R.string.share_title)     .inflateMenu(R.menu.menu_share)     .itemClick(new OnItemClickListener() {         @Override         public void click(Item item) {                 //TODO 处理点击结果             }         })     .show();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值