美文网首页
Android底部弹窗实现

Android底部弹窗实现

作者: itfitness | 来源:发表于2019-06-25 16:19 被阅读0次

目录

目录

效果展示

实现步骤

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()

项目源码:https://github.com/myml666/BottomDialog

相关文章

网友评论

      本文标题:Android底部弹窗实现

      本文链接:https://www.haomeiwen.com/subject/kpcxcctx.html