目录

效果展示

实现步骤
1. 创建动画文件
在res文件夹下创建anim文件夹并创建如下两个文件,用于实现弹窗的动画
- dialog_enter.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="300"
android:fromYDelta="100%p"
android:toYDelta="0" />
</set>
- dialog_exit.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="300"
android:fromYDelta="0"
android:toYDelta="100%p" />
</set>
2. 创建Dialog Style
在styles.xml文件里添加如下代码:
<!--底部弹出框动画-->
<style name="share_animation" parent="android:Animation">
<item name="android:windowEnterAnimation">@anim/dialog_enter</item>
<item name="android:windowExitAnimation">@anim/dialog_exit</item>
</style>
<!-- 对话框样式 -->
<style name="dialog_bottom_full" parent="android:style/Theme.Dialog">
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:scrollHorizontally">true</item>
</style>
3. 创建Dialog布局文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:background="@drawable/shape_bottomdialogbg"
android:padding="20dp"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_gravity="center"
android:textSize="30sp"
android:text="我是底部弹窗"
android:layout_width="wrap_content"
android:layout_height="200dp" />
</LinearLayout>
背景代码如下(shape_bottomdialogbg.xml):
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#ffffff"/>
<corners android:topLeftRadius="10dp" android:topRightRadius="10dp"/>
</shape>
4. 创建Dialog并显示
val bottomDialogView = View.inflate(this@MainActivity,R.layout.dialog_bottom,null)
val bottomDialog = Dialog(this@MainActivity, R.style.dialog_bottom_full)
bottomDialog.setCanceledOnTouchOutside(true)//点击窗体外部可以关闭弹窗
bottomDialog.setCancelable(true)
val window = bottomDialog.window
window.setGravity(Gravity.BOTTOM)//设置为底部显示
window.setWindowAnimations(R.style.share_animation)//设置动画
window.setContentView(bottomDialogView)
window.setLayout(WindowManager.LayoutParams.MATCH_PARENT,WindowManager.LayoutParams.WRAP_CONTENT)//设置横向全屏
bottomDialog.show()
网友评论