kotlin实现Android实现底部对话框BottomDialog(圆角,直角)
来源:互联网 发布:诺基亚e63怎么下载软件 编辑:程序博客网 时间:2024/05/17 09:32
本文借鉴秀源码: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"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.text.paintclockapplication.Activity.Main3Activity"> <Button android:id="@+id/btn_show_1" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="弹出底部对话框"/> <Button android:id="@+id/btn_show_2" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="弹出底部圆角对话框"/></LinearLayout>封装的像素类,听不错的:
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"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/shape_dialog" android:orientation="vertical"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:background="?android:attr/selectableItemBackground" android:clickable="true" android:drawableLeft="@drawable/ic_edit" android:drawablePadding="16dp" android:gravity="center_vertical" android:padding="16dp" android:text="设置备注及标签" android:textColor="#666666" android:textSize="14sp"/> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:background="?android:attr/selectableItemBackground" android:clickable="true" android:drawableLeft="@drawable/ic_star" android:drawablePadding="16dp" android:gravity="center_vertical" android:padding="16dp" android:text="标为星标朋友" android:textColor="#666666" android:textSize="14sp"/> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:background="?android:attr/selectableItemBackground" android:clickable="true" android:drawableLeft="@drawable/ic_circle" android:drawablePadding="16dp" android:gravity="center_vertical" android:padding="16dp" android:text="设置朋友圈权限" android:textColor="#666666" android:textSize="14sp"/> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:background="?android:attr/selectableItemBackground" android:clickable="true" android:drawableLeft="@drawable/ic_send" android:drawablePadding="16dp" android:gravity="center_vertical" android:padding="16dp" android:text="发送该名片" android:textColor="#666666" android:textSize="14sp"/> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:background="?android:attr/selectableItemBackground" android:clickable="true" android:drawableLeft="@drawable/ic_alert" android:drawablePadding="16dp" android:gravity="center_vertical" android:padding="16dp" android:text="投诉" android:textColor="#666666" android:textSize="14sp"/> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:background="?android:attr/selectableItemBackground" android:clickable="true" android:drawableLeft="@drawable/ic_delete" android:drawablePadding="16dp" android:gravity="center_vertical" android:padding="16dp" android:text="删除" android:textColor="#666666" android:textSize="14sp"/></LinearLayout>dialog_content_normal.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@android:color/white" android:orientation="vertical"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:background="?android:attr/selectableItemBackground" android:clickable="true" android:drawableLeft="@drawable/ic_edit" android:drawablePadding="16dp" android:gravity="center_vertical" android:padding="16dp" android:text="设置备注及标签" android:textColor="#666666" android:textSize="14sp"/> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:background="?android:attr/selectableItemBackground" android:clickable="true" android:drawableLeft="@drawable/ic_star" android:drawablePadding="16dp" android:gravity="center_vertical" android:padding="16dp" android:text="标为星标朋友" android:textColor="#666666" android:textSize="14sp"/> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:background="?android:attr/selectableItemBackground" android:clickable="true" android:drawableLeft="@drawable/ic_circle" android:drawablePadding="16dp" android:gravity="center_vertical" android:padding="16dp" android:text="设置朋友圈权限" android:textColor="#666666" android:textSize="14sp"/> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:background="?android:attr/selectableItemBackground" android:clickable="true" android:drawableLeft="@drawable/ic_send" android:drawablePadding="16dp" android:gravity="center_vertical" android:padding="16dp" android:text="发送该名片" android:textColor="#666666" android:textSize="14sp"/> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:background="?android:attr/selectableItemBackground" android:clickable="true" android:drawableLeft="@drawable/ic_alert" android:drawablePadding="16dp" android:gravity="center_vertical" android:padding="16dp" android:text="投诉" android:textColor="#666666" android:textSize="14sp"/> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:background="?android:attr/selectableItemBackground" android:clickable="true" android:drawableLeft="@drawable/ic_delete" android:drawablePadding="16dp" android:gravity="center_vertical" android:padding="16dp" android:text="删除" android:textColor="#666666" android:textSize="14sp"/></LinearLayout>
这些都放在drawlable文件里面ic_alert.xml
<?xml version="1.0" encoding="utf-8"?><vector xmlns:android="http://schemas.android.com/apk/res/android" android:viewportWidth="1024" android:viewportHeight="1024" android:width="18dp" android:height="18dp"> <path android:fillColor="#FF666666" android:pathData="M1006.4 876.4 585.6 64.128c-40.464-78.128-106.72-78.128-147.184 0L17.6 876.4c-40.464 78.128-1.6 142.064 86.4 142.064l816 0C1008 1018.464 1046.88 954.528 1006.4 876.4zM460.816 313.168c0-28.256 22.912-51.184 51.184-51.184s51.216 22.944 51.216 51.184l0 345.632c0 28.256-22.944 51.184-51.216 51.184s-51.184-22.944-51.184-51.184L460.816 313.168zM512 905.168c-35.344 0-64-28.624-64-64 0-35.344 28.656-64 64-64s64 28.656 64 64C576 876.544 547.344 905.168 512 905.168z"/></vector>
ic_edit.xml
<?xml version="1.0" encoding="utf-8"?><vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="18dp" android:height="18dp" android:viewportHeight="1024" android:viewportWidth="1024"> <path android:fillColor="#FF666666" android:pathData="M358.232894 664.748916c-0.067538 0.001023-0.135076 0.001023-0.202615 0.002047-4.583388-0.028653-8.996908-1.850138-12.238742-5.104251L231.670383 544.742728c-6.722098-6.77531-6.698562-17.73492 0.076748-24.490787L683.96763 69.079308c3.25309-3.241834 7.996115-4.39817 12.269441-5.043876 4.583388 0.028653 8.996908 1.850138 12.238742 5.104251L822.578548 184.009897c6.722098 6.77531 6.698562 17.73492-0.076748 24.490787L370.299721 659.707087C367.096772 662.914128 362.765117 664.710031 358.232894 664.748916z"/> <path android:fillColor="#FF666666" android:pathData="M132.691091 770.20062c-4.532223 0-8.946766-1.792832-12.227486-5.073552-4.194532-4.160763-5.969968-10.214642-4.684696-15.999392l32.945343-148.389632c1.370207-6.15621 5.987365-11.094686 12.05864-12.853749s12.616342-0.101307 17.081027 4.329609L293.375747 707.320501c4.482081 4.464685 6.172583 11.027148 4.414543 17.08205-1.759063 6.088672-6.680143 10.722202-12.853749 12.108782L136.479371 769.795391C135.227868 770.065544 133.958968 770.20062 132.691091 770.20062z"/> <path android:fillColor="#FF666666" android:pathData="M874.130667 958.814372 150.009526 958.814372c-28.700669 0-51.955302-23.271006-51.955302-51.955302 0-28.683273 23.254633-51.955302 51.955302-51.955302l724.121142 0c28.700669 0 51.955302 23.271006 51.955302 51.955302C926.08597 935.543366 902.831336 958.814372 874.130667 958.814372z"/></vector>
ic_star.xml
<?xml version="1.0" encoding="utf-8"?><vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="18dp" android:height="18dp" android:viewportHeight="512" android:viewportWidth="512"> <path android:fillColor="#ff666666" android:pathData="M256 30.72l61.133 172.083h164.147l-133.939 101.069 47.872 177.408-139.213-106.342-139.213 106.342 47.872-177.408-133.939-101.069h164.147z"/></vector>
ic_cricle
<?xml version="1.0" encoding="utf-8"?><vector xmlns:android="http://schemas.android.com/apk/res/android" android:viewportWidth="1024" android:viewportHeight="1024" android:width="18dp" android:height="18dp"> <path android:fillColor="#FF666666" android:pathData="M348.83584 644.01408 83.70176 378.896384c-12.787712 41.644032-19.683328 85.87264-19.683328 131.724288 0 50.643968 8.408064 99.311616 23.880704 144.703488l270.917632 0C355.388416 651.657216 352.0256 647.901184 348.83584 644.01408z"/> <path android:fillColor="#FF666666" android:pathData="M936.77056 365.924352 665.853952 365.924352c3.453952 3.657728 6.790144 7.445504 9.980928 11.331584l265.109504 265.115648c12.795904-41.66144 19.689472-85.87264 19.689472-131.750912C960.632832 459.983872 952.246272 411.31008 936.77056 365.924352z"/> <path android:fillColor="#FF666666" android:pathData="M907.916288 299.512832c-44.222464-82.597888-113.456128-149.74464-197.69856-191.222784L518.995968 299.512832 907.916288 299.512832z"/> <path android:fillColor="#FF666666" android:pathData="M116.791296 721.74592c43.990016 82.269184 112.868352 149.177344 196.64384 190.73024l190.710784-190.73024L116.791296 721.74592z"/> <path android:fillColor="#FF666666" android:pathData="M722.868224 525.689856l0 380.836864c82.536448-44.009472 149.6832-113.043456 191.307776-196.989952L723.243008 518.614016C723.160064 520.987648 723.014656 523.36128 722.868224 525.689856z"/> <path android:fillColor="#FF666666" android:pathData="M512.331776 62.319616c-50.64704 0-99.311616 8.404992-144.69632 23.860224l0 270.7712L642.92864 81.67936C601.614336 69.085184 557.761536 62.319616 512.331776 62.319616z"/> <path android:fillColor="#FF666666" android:pathData="M380.607488 939.232256c41.634816 12.807168 85.87264 19.698688 131.724288 19.698688 50.435072 0 98.870272-8.302592 144.108544-23.64928L656.44032 664.701952c-3.467264 3.254272-7.042048 6.416384-10.719232 9.43104L380.607488 939.232256z"/> <path android:fillColor="#FF666666" android:pathData="M301.232128 115.063808c-82.2784 44.018688-149.21216 112.886784-190.729216 196.661248l190.729216 190.72L301.232128 115.063808z"/></vector>
ic_send.xml
<?xml version="1.0" encoding="utf-8"?><vector xmlns:android="http://schemas.android.com/apk/res/android" android:viewportWidth="1024" android:viewportHeight="1024" android:width="18dp" android:height="18dp"> <path android:fillColor="#FF666666" android:pathData="M668.443563 462.989773v148.793838l261.966387-217.993896-261.966387-209.530131v131.190925c-337.916173 0.040932-354.177532 334.058308-354.177531 334.058308 95.647407-157.093874 154.497747-186.519044 337.919242-186.519044h16.258289z"/> <path android:fillColor="#FF666666" android:pathData="M720.839911 701.264575v32.072462H196.90509V366.588189h87.810929s28.880771-58.512648 90.954524-104.786555H118.315174c-14.467503 0-26.196639 11.729136-26.196638 26.196639v523.930727c0 14.470573 11.729136 26.198685 26.196638 26.198685h681.111583c14.468526 0 26.198685-11.730159 26.198685-26.198685V614.06763L720.839911 701.264575z"/></vector>ic_delete.xml
<?xml version="1.0" encoding="utf-8"?><vector xmlns:android="http://schemas.android.com/apk/res/android" android:viewportWidth="1024" android:viewportHeight="1024" android:width="18dp" android:height="18dp"> <path android:fillColor="#FF666666" android:pathData="M154.220431 213.852576c0-24.699542 20.022009-44.723597 44.721551-44.723597l223.61287 0 0-44.723597c0-24.699542 20.022009-44.723597 44.721551-44.723597l89.445148 0c24.699542 0 44.721551 20.024056 44.721551 44.723597l0 44.723597 223.610824 0c24.700565 0 44.723597 20.024056 44.723597 44.723597l0 44.720527L154.220431 258.573103 154.220431 213.852576zM825.055972 348.017228l0 89.446171 0 462.132242c0 24.697495-20.022009 44.720527-44.721551 44.720527L243.664555 944.31617c-24.699542 0-44.721551-20.024056-44.721551-44.720527L198.943005 437.4634l0-89.446171 0-44.720527 626.112967 0L825.055972 348.017228zM377.832278 437.4634c0-24.699542-20.024056-44.723597-44.721551-44.723597-24.699542 0-44.721551 20.024056-44.721551 44.723597l0 372.686071c0 24.699542 20.022009 44.723597 44.721551 44.723597 24.698518 0 44.721551-20.024056 44.721551-44.723597L377.832278 437.4634zM556.722574 437.4634c0-24.699542-20.022009-44.723597-44.723597-44.723597-24.698518 0-44.721551 20.024056-44.721551 44.723597l0 372.686071c0 24.699542 20.024056 44.723597 44.721551 44.723597 24.700565 0 44.723597-20.024056 44.723597-44.723597L556.722574 437.4634zM735.611847 437.4634c0-24.699542-20.022009-44.723597-44.723597-44.723597-24.698518 0-44.721551 20.024056-44.721551 44.723597l0 372.686071c0 24.699542 20.024056 44.723597 44.721551 44.723597 24.700565 0 44.723597-20.024056 44.723597-44.723597L735.611847 437.4634z"/></vector>
基本上已经实现了从下面弹起的dialogButton!!!
阅读全文
4 0
- kotlin实现Android实现底部对话框BottomDialog(圆角,直角)
- 简单实现从底部弹起的分享BottomDialog
- Android 实现底部弹出对话框效果
- Android之dialog实现底部出现对话框
- Builder模式在Android自定义底部对话框的实现
- Android 控件——利用Dialog实现底部弹出对话框
- Android 控件——利用Dialog实现底部弹出对话框
- Android底部对话框的实现(BottomSheet,自定义Dialog)
- 杨辉三角输出实现(左直角,右直角,等腰直角)
- 直角div实现
- android实现底部菜单栏
- android实现底部菜单栏
- android底部菜单栏实现
- android底部菜单实现
- Android--底部菜单栏实现
- Android 底部菜单栏实现
- android实现底部菜单栏
- BottomDialog 是一个通过 DialogFragment 实现的底部弹窗布局,并且支持弹出动画,支持任意布局http://shaohui.me
- CAS单点登录小技巧
- [Java配置]JDK安装与环境变量配置
- PHP-设计模式-依赖注入
- javascript基本数据类型和typeof
- 10进制转36进制
- kotlin实现Android实现底部对话框BottomDialog(圆角,直角)
- 从众心理·《厚黑学全书》
- 42 WebGL的插件Matrix插件的相关方法
- 开通博客了,用第一篇文章纪念一下。
- senology这个词啥意思?
- Interpolator插值器详解
- Web开发者必知的25个Apache性能优化技巧-程序员技术浅谈
- android隐式intent使用场景解析
- 设计模式-职责链模式