Android实现从底部弹出的Dialog示例(一)

一.概述

先给大家看一下效果图:

点击中间的显示弹框按钮,从底部弹出来一个对话框,用户可以点击拍照或者从相册选择进行相应的操作,下面看看怎么实现。

二.代码实现

主页面布局文件,很简单,一个按钮,响应点击事件:

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true" tools:context="com.example.dialogdemo.MainActivity"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:onClick="show" android:text="显示弹框" /> </RelativeLayout>

接下来看对话框的布局:

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:orientation="vertical" android:background="@drawable/background" android:layout_height="match_parent"> <TextView android:id="@+id/takePhoto" android:layout_width="match_parent" android:layout_height="45dp" android:layout_margin="2dp" android:gravity="center" android:text="拍照" android:textColor="#0000ff" android:textSize="18sp" android:textStyle="bold" /> <View android:layout_width="match_parent" android:layout_height="1px" android:background="#9e9e9e" /> <TextView android:id="@+id/choosePhoto" android:layout_width="match_parent" android:layout_height="45dp" android:layout_margin="2dp" android:gravity="center" android:text="从相册选择" android:textColor="#0000ff" android:textSize="18sp" android:textStyle="bold" /> </LinearLayout>

根布局为垂直的线性布局,加了一个背景,白色矩形,四个角弧度为5dp,代码如下

<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="#ffffff"/> <corners android:radius="5dp"/> </shape>

线性布局中是两个TextView和一条横线。也很简单

下面是java代码:

public class MainActivity extends AppCompatActivity implements View.OnClickListener{ private View inflate; private TextView choosePhoto; private TextView takePhoto; private Dialog dialog; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void show(View view){ dialog = new Dialog(this,R.style.ActionSheetDialogStyle); //填充对话框的布局 inflate = LayoutInflater.from(this).inflate(R.layout.dialog_layout, null); //初始化控件 choosePhoto = (TextView) inflate.findViewById(R.id.choosePhoto); takePhoto = (TextView) inflate.findViewById(R.id.takePhoto); choosePhoto.setOnClickListener(this); takePhoto.setOnClickListener(this); //将布局设置给Dialog dialog.setContentView(inflate); //获取当前Activity所在的窗体 Window dialogWindow = dialog.getWindow(); //设置Dialog从窗体底部弹出 dialogWindow.setGravity( Gravity.BOTTOM); //获得窗体的属性 WindowManager.LayoutParams lp = dialogWindow.getAttributes(); lp.y = 20;//设置Dialog距离底部的距离 // 将属性设置给窗体 dialogWindow.setAttributes(lp); dialog.show();//显示对话框 } @Override public void onClick(View view) { switch (view.getId()){ case R.id.takePhoto: Toast.makeText(this,"点击了拍照",Toast.LENGTH_SHORT).show(); break; case R.id.choosePhoto: Toast.makeText(this,"点击了从相册选择",Toast.LENGTH_SHORT).show(); break; } dialog.dismiss(); } }

窗口的样式:

<style name="ActionSheetDialogStyle" parent="@android:style/Theme.Dialog"> <!-- 背景透明 --> <item name="android:windowBackground">@android:color/transparent</item> <item name="android:windowContentOverlay">@null</item> <!-- 浮于Activity之上 --> <item name="android:windowIsFloating">true</item> <!-- 边框 --> <item name="android:windowFrame">@null</item> <!-- Dialog以外的区域模糊效果 --> <item name="android:backgroundDimEnabled">true</item> <!-- 无标题 --> <item name="android:windowNoTitle">true</item> <!-- 半透明 --> <item name="android:windowIsTranslucent">true</item> <!-- Dialog进入及退出动画 --> <item name="android:windowAnimationStyle">@style/ActionSheetDialogAnimation</item> </style> <!-- ActionSheet进出动画 --> <style name="ActionSheetDialogAnimation" parent="@android:style/Animation.Dialog"> <item name="android:windowEnterAnimation">@anim/actionsheet_dialog_in</item> <item name="android:windowExitAnimation">@anim/actionsheet_dialog_out</item> </style>

对话框出现动画代码:

<?xml version="1.0" encoding="utf-8"?> <translate xmlns:android="http://schemas.android.com/apk/res/android" android:duration="200" android:fromYDelta="100%" android:toYDelta="0" />

对话框消失的代码:

<?xml version="1.0" encoding="utf-8"?> <translate xmlns:android="http://schemas.android.com/apk/res/android" android:duration="200" android:fromYDelta="0" android:toYDelta="100%" />

三.总结

本次实现的Dialog主要是通过TextView来实现的,并且没有加入状态选择器以及取消按钮,在下篇文章中将对对话框的表现形式稍微进行一下改动。以适应项目中的开发需求。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

时间: 2024-09-11 16:59:09

Android实现从底部弹出的Dialog示例(一)的相关文章

Android 从底部弹出Dialog(横向满屏)的实例代码_Android

项目中经常需要底部弹出框,这里我整理一下其中我用的比较顺手的一个方式(底部弹出一个横向满屏的dialog). 效果图如下所示(只显示关键部分): 步骤如下所示: 1.定义一个dialog的布局(lay_share.xml) <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/androi

android底部弹出iOS7风格对话选项框(QQ对话框)--第三方开源之IOS_Dialog_Library_Android

先给大家展示下效果图,喜欢的朋友可以下载源码哦. 完成这个效果的是使用了 IOS_Dialog_Library 下载地址:http://xiazai.jb51.net/201509/yuanma/IOS_Dialog_Library(jb51.net) 下载后导入到Eclipse中,然后作为Library引入到自己的工程中,直接作为第三方控件使用. 测试代码: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/a

Android 从底部弹出Dialog(横向满屏)的实例代码

项目中经常需要底部弹出框,这里我整理一下其中我用的比较顺手的一个方式(底部弹出一个横向满屏的dialog). 效果图如下所示(只显示关键部分): 步骤如下所示: 1.定义一个dialog的布局(lay_share.xml) <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/androi

Android实现底部弹出PopupWindow背景逐渐变暗效果_Android

在Android开发中,经常需要通过点击某个按钮弹出对话框或者选择框,通过Dialog或者PopupMenu.PopupWindow都能实现. 这里主要介绍后两者:PopupMenu.PopupWindow的实现. 先看两个效果图上边PopupMenu,下边PopupWindow: PopupMenu PopupWindow 一.PopupMenu实现: PopupMenu实现起来比较简单,主要用来实现根据按钮附近弹出的对话框. 首先定义一个menu文件\res\menu\headmenu.xm

Android Demo---实现从底部弹出窗口

       在前面的博文中,小编简单的介绍了如何制作圆角的按钮以及圆角的图片,伴着键盘和手指之间的舞步,迎来新的问题,不知道小伙伴有没有这样的经历,以App为例,点击头像的时候,会从底部弹出一个窗口,有从相册中选择.拍照.取消的字样,点击相应的按钮,完成相应的操作,在小编做项目的过程中遇到类似的问题,小编经过一番捣鼓,终于搞定了ing,今天这篇博文博文,小编简单的介绍一下,如何点击头像,实现从底部弹出窗口的故事,这个故事实现的是弹出滑动窗口,主要是使用了一些设置Activity的样式来实现弹出

Android使用Activity实现从底部弹出菜单或窗口的方法

本文实例讲述了Android使用Activity实现从底部弹出菜单或窗口的方法.分享给大家供大家参考,具体如下: 这里使用activity实现弹出滑动窗口或菜单,主要是使用了一些设置activity的样式来实现弹出窗口和滑动效果,实现如下: 第一步:设计要弹出窗口的xml布局: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://sche

Android实现底部弹出PopupWindow背景逐渐变暗效果

在Android开发中,经常需要通过点击某个按钮弹出对话框或者选择框,通过Dialog或者PopupMenu.PopupWindow都能实现. 这里主要介绍后两者:PopupMenu.PopupWindow的实现. 先看两个效果图上边PopupMenu,下边PopupWindow: PopupMenu PopupWindow 一.PopupMenu实现: PopupMenu实现起来比较简单,主要用来实现根据按钮附近弹出的对话框. 首先定义一个menu文件\res\menu\headmenu.xm

手机-android使用Theme.AppCompat.Light时PopupWindow底部弹出的问题

问题描述 android使用Theme.AppCompat.Light时PopupWindow底部弹出的问题 在使用主题为Theme.AppCompat.Light.NoActionBar这个系列的主题时,PopupWindow底部弹出Popwindow.showAtLocation(v, Gravity.BOTTOM, 0, 0);如果底部有虚拟返回键的手机时候,会从屏幕最底下弹出,一部分被遮挡住了,求救,找了很就都没找到类似的问题!!!!!!! 解决方案 目前只能通过更换theme 解决,但

Android PopupWindow实现右侧、左侧和底部弹出菜单_Android

本教程为大家分享了Android PopupWindow弹出菜单的具体代码,供大家参考,具体内容如下 项目代码:http://xiazai.jb51.net/201611/yuanma/PopupLeftMenu(jb51.net).rar 项目SDK是5.1,建议将代码拷到自己的工程中去 代码如下: MainActivity类: package com.example.popupleftmenu; import android.app.Activity; import android.cont