Android之底部弹框
文章链接:
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之底部弹框相关推荐
- android的底部弹出框炫酷的样式,Android自定义底部弹出框ButtomDialog
本文实例为大家分享了Android自定义底部弹出框的具体代码,供大家参考,具体内容如下 先看看效果和你要的是否一样 一 .先来配置自定义控件需要的资源 1.在res文件夹下创建一个anim文件夹并创建 ...
- android 仿ios 底部弹出,项目需求讨论-仿ios底部弹框实现及分析
hi,在项目开发中,有时候需要仿照ios的底部弹框做效果,比如我们在iPhone上面关闭定位的时候,就会弹出ios特有的底部弹框: 屏幕快照 2017-10-09 08.20.30 PM.png 弹框 ...
- java安卓弹框样式_Android 实现抖音头像底部弹框效果的实例代码
布局文件 activity_test.xml android:layout_width="match_parent" android:layout_height="mat ...
- 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 ...
- flutter 分割线_Flutter 底部弹框 showModalBottomSheet 使用Demo
题记 -- 执剑天涯,从你的点滴积累开始,所及之处,必精益求精. Flutter是谷歌推出的最新的移动开发框架. [x1]微信公众号的每日提醒 随时随记 每日积累 随心而过 文章底部扫码关注 [x2] ...
- Flutter 底部弹框 showModalBottomSheet 使用Demo
题记 -- 执剑天涯,从你的点滴积累开始,所及之处,必精益求精. Flutter是谷歌推出的最新的移动开发框架. [x1]微信公众号的每日提醒 随时随记 每日积累 随心而过 文章底部扫码关注 [x2] ...
- 微信小程序之底部弹框预约插件
代码地址如下: http://www.demodashi.com/demo/13982.html 一.前期准备工作: 软件环境:微信开发者工具 官方下载地址:https://mp.weixin.qq. ...
- 小程序头像和昵称填写能力用底部弹框界面实现
最近,微信小程序又更新了文档,关于获取头像和昵称需要进行适配. https://developers.weixin.qq.com/community/develop/doc/00022c683e8a8 ...
- Android自定义底部弹出窗-dialog(2种实现分析+源码)
Android自定义底部弹出窗-dialog(2种实现分析+源码) 上线项目功能抽取,在项目开发中,我们会在许多地方会用到底部自定义弹窗,比如设置:个人账户退出,切换,照片的拍照或者相册的调出,或者一 ...
最新文章
- 20165303实验一 Java开发环境的熟悉
- php glob() 列出目录及文件
- python怎么设置颜色深浅变化_python之深浅拷贝
- C语言abc输出最小值改错题,C语言程序设计
- webgl 着色器_如何使用AI,AR和WebGL着色器来帮助视障人士
- 不作35岁的程序员?
- Flutter AnimatedSwitcher 实现优美的图片切换动画
- SmallMQ实现发布
- (java)五大常用算法
- LintCode 171. Anagrams
- python身份证区域分割_python 身份证归属地解析
- linux ln -s
- Qt5.12案例 翻金币小游戏
- 【批量解压d文件】d文件是GNSS观测数据文件
- 用EasyRTSPServer模拟摄像机RTSP流实现RTSP摄像机模拟器
- DCC-MGARCH:动态条件相关系数模型(R+Stata)
- c++实现并集(A∪B = C)
- 搭建电话机器人或OKCC外呼中心系统实体机与云服务器哪个好(三)
- 使用StrongSwan配置IPSec
- 2022-2028全球与中国伸缩软管市场现状及未来发展趋势