这是我的第一个开源项目,我不是太清楚需要具体遵守什么细则,如果大家发现有什么问题,还烦请及时告知我;
说到原理我有些难以启齿,并没有用到什么高深的技术和方法。支持java-8,仅仅是直接继承自系统Dialog,使用xml实现UI,通过建造者模式控制相关的功能,代码简陋怕是贻笑大方我就不挂出来了。
allprojects {
repositories {
...
//这一行
maven { url 'https://jitpack.io' }
}
}
dependencies {
//这一行
implementation 'com.github.crykid:MagicDialog:v1.0.1'
}
new MagicDialog
.Builder(MainActivity.this)
//添加title
.title("this is title")
//添加图标
.icon(R.mipmap.ic_launcher_round)
//添加主要提示内容
.content("this is content")
//添加输入框
.input("please enter", "")
//添加"确定"等积极性意义的按钮及回调
.positiveEvent("confirm", view -> {
//doSth
})
//添加"取消"等否定性意义的按钮及回调
.negativeEvent("cancel", view -> {
//doSth
})
//添加列表并添加adapter
.recyclerView(null)
//分割线颜色
.divider(R.color.default_blue)
//不要分割线
//.withoutDivider()
//当需要引导用户点击确认时底部的关闭按钮
.bottomDismissEvent(v->{ //doSth })
//是否允许点击外部或返回取消弹窗
.cancelAble(false)
.build()
.show();
结果如下:
- 关于列表RecyclerView
可以看到在3中,我调用了recyclerView(RecyclerView.adapter)方法,但是在截图中并没有显示出来。在当前库中,并没有实现adapter以及内置的adapter,需要您自己去实现;
在这里recyclerView默认是 列表垂直排列的,如果您想使用使用其它使用方式,可以自己实现adapter的同时实现LayoutManager(同时列表尽量不要太长哦,否则,你会看到很奇怪的样子):
RecyclerView.LayoutManager manager = new LinearLayoutManager(this);
builder.recyclerView(mAdapter,manager);
- 关于按钮及回调
在上面的示例中,每个按钮都添加了文案及回调。当点击了按钮仅仅需要弹窗消失而不需要做任何事情的时候,怎么办呢,当然,可以不添加回调,但是,按钮文案是必须的:
new MagicDialog
.Builder(this)
.title("title")
.content("this is content")
.positiveEvent("sure")
.negativeEvent("cancel")
.bottomDismissEvent()
.build()
.show();
目前这些功能仅仅是我近一个月中所需功能的概括,可能并不能满足您的需求,不过我会很快更新一些其它的功能出来。 例如:不能更改Theme,主动控制dismiss()/cancel(),progress,按钮点击动效,以及没有使用butterknife等等,后期如果需要我会加上的
-
v1.0.1更新内容:
添加分割线的控制,使用方式见二.3