kotlin实现Android实现底部对话框BottomDialog(圆角,直角)
16lz
2021-01-24
本文借鉴秀源码:http://www.xiufm.com/thread-15571-1-3.html
图片借鉴秀源码gif
先来看main.java
class Main3Activity : AppCompatActivity() { private fun show2() { var button1Dialog: Dialog = Dialog(this,R.style.ButtomDialog) var view: View = LayoutInflater.from(this).inflate(R.layout.dialog_content_circle,null) button1Dialog.setContentView(view) var layoutParams: ViewGroup.MarginLayoutParams = view.layoutParams as ViewGroup.MarginLayoutParams layoutParams.width = resources.displayMetrics.widthPixels - DensityUtil.dp2px(this,16f) layoutParams.bottomMargin = DensityUtil.dp2px(this,8f) view.layoutParams = layoutParams button1Dialog.setCanceledOnTouchOutside(true) button1Dialog.window.setGravity(Gravity.BOTTOM) button1Dialog.window.setWindowAnimations(R.style.BottomDialog_Animation) button1Dialog.show() } private fun show1() { var button1Dialog: Dialog = Dialog(this,R.style.ButtomDialog) var view: View = LayoutInflater.from(this).inflate(R.layout.dialog_content_normal,null) button1Dialog.setContentView(view) var layoutParams: ViewGroup.LayoutParams = view.layoutParams layoutParams.width = resources.displayMetrics.widthPixels view.layoutParams = layoutParams button1Dialog.window.setGravity(Gravity.BOTTOM) button1Dialog.window.setWindowAnimations(R.style.BottomDialog_Animation) button1Dialog.show() } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main3) initview() } private fun initview() { btn_show_1.setOnClickListener{show1()} btn_show_2.setOnClickListener{show2()} }}
main.xml <?xml version="1.0" encoding="utf-8"?>
封装的像素类,听不错的: object DensityUtil { /** * dp转px * * @param context * @param dpVal * @return */ fun dp2px(context: Context, dpFloat: Float): Int{ return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,dpFloat,context.resources.displayMetrics).toInt() } /** * sp转px * * @param context * @param spVal * @return */ fun sp2px(context: Context,spFloat: Float): Int{ return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP,spFloat,context.resources.displayMetrics).toInt() } /** * px转dp * * @param context * @param pxVal * @return */ fun px2dp(context: Context,pxFloat: Float): Float{ var scale : Float = context.resources.displayMetrics.density return (pxFloat/scale) } /** * px转sp * * @param pxVal * @param pxVal * @return */ fun px2sp(context: Context,pxFloat: Float):Float{ return (pxFloat/context.resources.displayMetrics.scaledDensity) }}
dialog_content_circle.xml <?xml version="1.0" encoding="utf-8"?>
dialog_content_normal.xml <?xml version="1.0" encoding="utf-8"?>
这些都放在drawlable文件里面
ic_alert.xml <?xml version="1.0" encoding="utf-8"?>
ic_edit.xml
<?xml version="1.0" encoding="utf-8"?>
ic_star.xml
<?xml version="1.0" encoding="utf-8"?>
ic_cricle
<?xml version="1.0" encoding="utf-8"?>
ic_send.xml
<?xml version="1.0" encoding="utf-8"?>
ic_delete.xml <?xml version="1.0" encoding="utf-8"?>
基本上已经实现了从下面弹起的dialogButton!!!
更多相关文章
- android 输入对话框 确认对话框
- Android(安卓)自定义对话框
- android 底部弹出提示框的实现方式
- android PhoneGap JQuery Mobile Demo
- android 自定义侧边栏
- 显示倒计时的Dialog
- Android(安卓)强制下线功能 第一行代码
- android退出应用程序解决方案
- Android常用控件-DatePicker以及对话框的两种使用方法