一个kotlin编写的dialog库,希望这是你使用的最后一个dialog库

第一次写README也不知道该怎么吹,就直接贴代码吧

newGenjiDialog {
width = dp2px(100f)
height = dp2px(100f)
}.showOnWindow(supportFragmentManager)

就这么简单,一个默认居中的加载中loadDialog就出来了,如图:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

1、位置

如果我想让他显示在屏幕右上角怎么办?非常简单!

newGenjiDialog {
width = dp2px(100f)
height = dp2px(100f)
gravity = DialogGravity.RIGHT_TOP
}.showOnWindow(supportFragmentManager)

DialogGravity这个枚举中我设定了9种显示方式,左上,中上,右上,左中,正中,右中,左下,中下,右下

因此只需要添加一行代码指定dialog的位置就行了、效果如图:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

你现在可能要问了,你只设置了9个位置,我需要偏移怎么办呢, 当然,这时候就需要用到偏移了

newGenjiDialog {
width = dp2px(100f)
height = dp2px(100f)
verticalMargin = dp2px(100f).toFloat()
horizontalMargin = dp2px(100f).toFloat()
gravity = DialogGravity.RIGHT_TOP
}.showOnWindow(supportFragmentManager)

就这样我就给dialog加上了横向纵向分别100dp的偏移,效果如图:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

关于这个偏移量,这里我多说两句,原本偏移量的取值范围是在[0-1],指的是所占屏幕宽高的百分比, 但是为了方便起见,我这里给大于1的偏移量自动换算成了百分比,如果针对个别机型有误差的,可以自行换算成[0-1]即可

2、动画

细心地你可能发现了,在屏幕右上角显示的时候是从屏幕边缘滑出的, 没错,我给DialogGravity的每一个显示位置都设定了默认的动画, 当没有指定动画的时候就会按照默认的动画来显示、

当然自定义动画是肯定要有的

newGenjiDialog {
width = dp2px(100f)
height = dp2px(100f)
animStyle = R.style.ScaleADEnterExitAnimationX50Y50
gravity = DialogGravity.RIGHT_TOP
}.showOnWindow(supportFragmentManager)

这样就完成了动画的自定义,当然你还可以这样写:

dialog.showOnWindow(supportFragmentManager,DialogGravity.RIGHT_TOP,R.style.ScaleADEnterExitAnimationX50Y50)

效果如图:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

内置动画我在style文件中注释写了作用,可以自己去看看

如果想要贴在一个view附近怎么办?

newGenjiDialog {
width = dp2px(100f)
height = dp2px(100f)
animStyle = R.style.ScaleADEnterExitAnimationX50Y100
gravityAsView = DialogGravity.CENTER_TOP
}.showOnView(supportFragmentManager,showLoading)

需要注意的是这里的gravaty换成了gravityAsView,效果如图:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

同样你还可以这样写:

dialog.showOnWindow(supportFragmentManager,DialogGravity.RIGHT_TOP,R.style.ScaleADEnterExitAnimationX50Y50)

相对view的偏移量 offsetX和offsetY属性

这两个属性建议去DialogOptions中的dialogAsView()方法去查看方法注释

附加一个稍微特殊点的滑出方式(带遮罩)

newGenjiDialog { genjiDialog ->
//设置布局
layoutId = R.layout.slide_view_bottom
//isLazy = true
//设置横纵向占满
isFullHorizontal = true
isFullVerticalOverStatusBar = true
//阴影透明度
dimAmount = 0f
//处理事件/数据绑定
convertListenerFun { holder, dialog ->
//设置点击realView以外的部分就dismiss
holder.setOnClickListener(R.id.bottomTouchView) {
if (canClick) {
dialog.dismiss()
}
}.setOnClickListener(R.id.topTouchView) {
if (canClick) {
dialog.dismiss()
}
}
}
setOnEnterAnimator { rootView ->
//在此处设置进入动画
AnimatorSet().apply {
duration = 500L
val realView = rootView.findViewById(R.id.realView)
val touchView = rootView.findViewById(R.id.bottomTouchView)
val topTouchView = rootView.findViewById(R.id.topTouchView)

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip204888 (备注Android)
img

尾声

最后,我再重复一次,如果你想成为一个优秀的 Android 开发人员,请集中精力,对基础和重要的事情做深度研究。

对于很多初中级Android工程师而言,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长且无助。 整理的这些架构技术希望对Android开发的朋友们有所参考以及少走弯路,本文的重点是你有没有收获与成长,其余的都不重要,希望读者们能谨记这一点。

这里,笔者分享一份从架构哲学的层面来剖析的视频及资料分享给大家梳理了多年的架构经验,筹备近6个月最新录制的,相信这份视频能给你带来不一样的启发、收获。

Android进阶学习资料库

一共十个专题,包括了Android进阶所有学习资料,Android进阶视频,Flutter,java基础,kotlin,NDK模块,计算机网络,数据结构与算法,微信小程序,面试题解析,framework源码!

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
img
12798692084)]

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-po3eW53f-1712798692085)]

  • 8
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值