全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

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来实现的,并且没有加入状态选择器以及取消按钮,在下篇文章中将对对话框的表现形式稍微进行一下改动。以适应项目中的开发需求。

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


# dialog从底部弹出  # 自定义dialog底部弹出  # dialog底部弹出  # Android 全局Dialog的简单实现方法  # Android使用Dialog风格弹出框的Activity  # Android 中从屏幕左下角弹出Dialog动画效果的实现代码  # Android中自定义的dialog中的EditText无法弹出输入法解决方案  # Android 仿苹果底部弹出Dialog  # Android 从底部弹出Dialog(横向满屏)的实例代码  # Android解决dialog弹出时无法捕捉Activity的back事件的方法  # Android自定义弹出框dialog效果  # Android 解决dialog弹出时无法捕捉Activity的back事件问题  # Android 8.0如何完美适配全局dialog悬浮窗弹出  # 对话框  # 弹出  # 也很  # 很简单  # 看一下  # 用户可以  # 来实现  # 表现形式  # 大家多多  # 先给  # 主要是  # 无标题  # 选择器  # 以适应  # takePhoto  # id  # layout_margin  # gravity  # dp  # center 


相关文章: 小程序网站制作需要准备什么资料,如何制作小程序?  如何处理“XML格式不正确”错误 常见XML well-formed问题解决方法  如何选择服务器才能高效搭建专属网站?  公司网站制作需要多少钱,找人做公司网站需要多少钱?  C#怎么使用委托和事件 C# delegate与event编程方法  建站主机选购指南:核心配置与性价比推荐解析  网站制作公司排行榜,抖音怎样做个人官方网站  广州美橙建站如何快速搭建多端合一网站?  网站制作专业公司有哪些,如何制作一个企业网站,建设网站的基本步骤有哪些?  如何在橙子建站上传落地页?操作指南详解  香港服务器部署网站为何提示未备案?  ,想在网上投简历,哪几个网站比较好?  如何做静态网页,sublimetext3.0制作静态网页?  网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?  建站之星×万网:智能建站系统+自助建站平台一键生成  如何选择最佳自助建站系统?快速指南解析优劣  建站之星在线客服如何快速接入解答?  网站制作大概要多少钱一个,做一个平台网站大概多少钱?  制作网站的过程怎么写,用凡科建站如何制作自己的网站?  如何在香港免费服务器上快速搭建网站?  营销式网站制作方案,销售哪个网站招聘效果最好?  如何用搬瓦工VPS快速搭建个人网站?  网站制作服务平台,有什么网站可以发布本地服务信息?  如何快速搭建FTP站点实现文件共享?  微信小程序 五星评分(包括半颗星评分)实例代码  建站之星logo尺寸如何设置最合适?  建站之星代理商如何保障技术支持与售后服务?  常州企业建站如何选择最佳模板?  GML (Geography Markup Language)是什么,它如何用XML来表示地理空间信息?  Avalonia如何实现跨窗口通信 Avalonia窗口间数据传递  网站建设制作、微信公众号,公明人民医院怎么在网上预约?  ,网站推广常用方法?  视频网站制作教程,怎么样制作优酷网的小视频?  建站之星后台搭建步骤解析:模板选择与产品管理实操指南  最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?  如何快速上传自定义模板至建站之星?  为什么Go需要go mod文件_Go go mod文件作用说明  高性能网站服务器部署指南:稳定运行与安全配置优化方案  昆明网站制作哪家好,昆明公租房申请网上登录入口?  头像制作网站在线制作软件,dw网页背景图像怎么设置?  网站制作的软件有哪些,制作微信公众号除了秀米还有哪些比较好用的平台?  东莞专业网站制作公司有哪些,东莞招聘网站哪个好?  宝塔建站无法访问?如何排查配置与端口问题?  山东网站制作公司有哪些,山东大源集团官网?  C++ static_cast和dynamic_cast区别_C++静态转换与动态类型安全转换  北京建设网站制作公司,北京古代建筑博物馆预约官网?  湖州网站制作公司有哪些,浙江中蓝新能源公司官网?  正规网站制作公司有哪些,目前国内哪家网页网站制作设计公司比较专业靠谱?口碑好?  如何用好域名打造高点击率的自主建站?  建站主机选购指南与交易推荐:核心配置解析 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。