文章链接:

Android之底部弹窗

知识点:

1、dialog的简单使用;

2、自定义底部弹框;

3、新名词记录

{

5.0 转场动画

}

底部弹框:就是从手机屏幕底边位置弹出来,最常见的就是弹框里头有好几个选项让你选择。例如微信里面看一篇文章的时候,我们点击右上角的按钮,就会看到有一个弹框从底部弹出来,里面有各个选项可以点击选择。那么怎么来做呢?

思路其实很简单,一说到弹框,我们脑海里必然先想到的是dialog。这个东西可是很好用的呢,很多弹窗的提示,我们都是直接使用它的了。

这里有一个弹窗dialog的使用示例:

private void dialog(){  AlertDialog.Builder builder=new AlertDialog.Builder(this); builder.setTitle("提示"); //设置标题  builder.setMessage("是否确认退出?"); //设置内容  builder.setIcon(R.mipmap.ic_launcher);//设置图标,图片id  builder.setPositiveButton("确定", new DialogInterface.OnClickListener() { //设置确定按钮  @Override  public void onClick(DialogInterface dialog, int which) {  dialog.dismiss(); //关闭dialog  Toast.makeText(MainActivity.this, "确认" + which, Toast.LENGTH_SHORT).show();  }  });  builder.setNegativeButton("取消", new DialogInterface.OnClickListener() { //设置取消按钮  @Override  public void onClick(DialogInterface dialog, int which) {  dialog.dismiss();  Toast.makeText(MainActivity.this, "取消" + which, Toast.LENGTH_SHORT).show();  }  });  //创建并显示出来  builder.create().show();  }  

效果图我就不展示出来了。大家可以将上面的代码在工程里头跑一跑就知道了。

那么如何来做我们底部的弹框呢,我们知道dialog是依附在window上面的,而window里头有一个setGravity(int)的方法,我们继承dialog,自定义一个控件,然后拿到dialog依附的这个Window,然后设置dialog显示的位置,并且把先要显示的内容以一个view传过去,我们直接显示出来就OK了。

下面我直接把我们继承自dialog的BottomDialog.java类直接贴出来。代码很简单,一看就明白了。我就不做过多的解释了。

import android.app.Dialog;
import android.content.Context;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;/*** desc:自定义冲底部弹出来的弹框* <p>* author:kuyu.yaojt (tanksu)* <p>* email:yaojt@kuyumall.com* <p>* date:17/3/14*/public class BottomDialog extends Dialog {/*这两个文件都是在style.xml文件里头定义DialogTheme 样式:<style name="DialogTheme" parent="@android:style/Theme.Dialog"><item name="android:windowFrame">@null</item><!-- 边框 --><item name="android:windowIsFloating">true</item><!-- 是否浮现在activity之上 --><item name="android:windowIsTranslucent">false</item><!-- 半透明 --><item name="android:windowNoTitle">true</item><item name="android:windowBackground">@android:color/transparent</item><item name="android:background">@android:color/transparent</item><item name="android:backgroundDimEnabled">true</item><!-- 模糊 --></style>DialogBottomAnim 动画数据,利用的是系统的动画<style name="DialogBottomAnim"><!--进入动画--><item name="@android:windowEnterAnimation">@anim/dialog_enter</item><!--退出动画--><item name="@android:windowExitAnimation">@anim/dialog_exit</item></style>*//*** 构造函数** @param context context* @param view    显示的view* @param cancel  点击外部是否可以取消*/public BottomDialog(Context context, View view, boolean cancel) {this(context, view, R.style.DialogTheme, cancel);}/*** @param context           context* @param view              显示的view* @param style             布局样式* @param outsideCancelAble 点击外部是否可以取消*/public BottomDialog(Context context, View view, int style, boolean outsideCancelAble) {super(context, style);setContentView(view);setCanceledOnTouchOutside(outsideCancelAble);Window window = getWindow();if (window != null) {/* 此处可以设置dialog显示的位置 */window.setGravity(Gravity.BOTTOM);/* 添加动画 */window.setWindowAnimations(R.style.DialogBottomAnim);ViewGroup.LayoutParams params = view.getLayoutParams();if (params == null) {params = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);}/* 重新设置弹框的宽度 */params.width = window.getWindowManager().getDefaultDisplay().getWidth();view.setLayoutParams(params);}}}

我把需要用到的资源文件,都直接放在上面这个类里头,你只需要将他们放到style.xml文件里头就可以了。

然后是怎么调用上面这个自定义的底部弹框类。很简单,如下:

View view = LayoutInflater.from(this).inflate(R.layout.popup_trans_dialog, null);mBottomDialog = new BottomDialog(this, view, true);createView(view);

createView(View)方法是对于显示的view里头操作的响应,BottomDialog只是紧紧帮你展示你的view,事件的监听响应都是外面去做的,例如有一个button,我们可以findviewbyid(),然后设置点击监听等等操作。
这就是今天的内容,如果任何问题,请及时与我联系,谢谢!

Android之底部弹框相关推荐

  1. android的底部弹出框炫酷的样式,Android自定义底部弹出框ButtomDialog

    本文实例为大家分享了Android自定义底部弹出框的具体代码,供大家参考,具体内容如下 先看看效果和你要的是否一样 一 .先来配置自定义控件需要的资源 1.在res文件夹下创建一个anim文件夹并创建 ...

  2. android 仿ios 底部弹出,项目需求讨论-仿ios底部弹框实现及分析

    hi,在项目开发中,有时候需要仿照ios的底部弹框做效果,比如我们在iPhone上面关闭定位的时候,就会弹出ios特有的底部弹框: 屏幕快照 2017-10-09 08.20.30 PM.png 弹框 ...

  3. java安卓弹框样式_Android 实现抖音头像底部弹框效果的实例代码

    布局文件 activity_test.xml android:layout_width="match_parent" android:layout_height="mat ...

  4. android仿ios弹框_在“提示”框中:iOS外观(在Android上运行),Google Maps作为Time Machine,下载Wii游戏保存...

    android仿ios弹框 Once a week we round up some great reader tips and share them with everyone. Read on t ...

  5. flutter 分割线_Flutter 底部弹框 showModalBottomSheet 使用Demo

    题记 -- 执剑天涯,从你的点滴积累开始,所及之处,必精益求精. Flutter是谷歌推出的最新的移动开发框架. [x1]微信公众号的每日提醒 随时随记 每日积累 随心而过 文章底部扫码关注 [x2] ...

  6. Flutter 底部弹框 showModalBottomSheet 使用Demo

    题记 -- 执剑天涯,从你的点滴积累开始,所及之处,必精益求精. Flutter是谷歌推出的最新的移动开发框架. [x1]微信公众号的每日提醒 随时随记 每日积累 随心而过 文章底部扫码关注 [x2] ...

  7. 微信小程序之底部弹框预约插件

    代码地址如下: http://www.demodashi.com/demo/13982.html 一.前期准备工作: 软件环境:微信开发者工具 官方下载地址:https://mp.weixin.qq. ...

  8. 小程序头像和昵称填写能力用底部弹框界面实现

    最近,微信小程序又更新了文档,关于获取头像和昵称需要进行适配. https://developers.weixin.qq.com/community/develop/doc/00022c683e8a8 ...

  9. Android自定义底部弹出窗-dialog(2种实现分析+源码)

    Android自定义底部弹出窗-dialog(2种实现分析+源码) 上线项目功能抽取,在项目开发中,我们会在许多地方会用到底部自定义弹窗,比如设置:个人账户退出,切换,照片的拍照或者相册的调出,或者一 ...

最新文章

  1. 20165303实验一 Java开发环境的熟悉
  2. php glob() 列出目录及文件
  3. python怎么设置颜色深浅变化_python之深浅拷贝
  4. C语言abc输出最小值改错题,C语言程序设计
  5. webgl 着色器_如何使用AI,AR和WebGL着色器来帮助视障人士
  6. 不作35岁的程序员?
  7. Flutter AnimatedSwitcher 实现优美的图片切换动画
  8. SmallMQ实现发布
  9. (java)五大常用算法
  10. LintCode 171. Anagrams
  11. python身份证区域分割_python 身份证归属地解析
  12. linux ln -s
  13. Qt5.12案例 翻金币小游戏
  14. 【批量解压d文件】d文件是GNSS观测数据文件
  15. 用EasyRTSPServer模拟摄像机RTSP流实现RTSP摄像机模拟器
  16. DCC-MGARCH:动态条件相关系数模型(R+Stata)
  17. c++实现并集(A∪B = C)
  18. 搭建电话机器人或OKCC外呼中心系统实体机与云服务器哪个好(三)
  19. 使用StrongSwan配置IPSec
  20. 2022-2028全球与中国伸缩软管市场现状及未来发展趋势

热门文章

  1. php://input的使用方法
  2. 如何高质量产出与进步
  3. 特征值分解和SVD分解
  4. Mysql连接工具navicat的连接方法
  5. 【CentOS 7 防火墙配置】
  6. Java岗开发3年,公司临时抽查算法,离职后这几题我记一辈子,由浅入深
  7. 如何解除计算机限制网络,终于知晓怎么解除网络限制
  8. POI导出消息列表(包含图片)
  9. IdeaVim 基本操作
  10. TECHNETCAL日本免费空间今日崩溃