adnroid仿miui的dialog

adnroid仿miui的dialog

大家好,又见面了,我是全栈君,祝每个程序员都可以多学几门语言。

先来看下效果图:

adnroid仿miui的dialog

当中show和dismiss的时候有动画效果。

原先试过使用PopupWindow来做,可是使用的时候不是那么舒服,毕竟不是dialog嘛。

所以这次尝试还是使用dialog来做 ,非常多地方是引用了系统源代码(源代码是最好的老师)

首先看CustomDialog.java的构造函数:

protected CustomDialog(Context context) {
        this(context, R.style.CustomDialog);
    }

    protected CustomDialog(Context context, int theme) {
        super(context, theme);
        mAlert = new AlertController(context, this, getWindow());
        
        Window window = getWindow();
        window.setGravity(Gravity.BOTTOM); // 设置window的位置为底部
        window.setWindowAnimations(R.style.AnimationDialog); // 设置window的动画
        window.setBackgroundDrawableResource(android.R.color.transparent); // 设置window背景透明
    }

 

艾玛,不太会描写叙述,直接上源代码

0资源分代码下载地址:http://download.csdn.net/detail/luck_apple/7735321

源代码中有点小问题,addView功能没有实现,在AlertController中加入下面代码就可以:

public void apply(AlertController dialog) {
            if (mTitle != null) {
                dialog.setTitle(mTitle);
            }
            if (mMessage != null) {
                dialog.setMessage(mMessage);
            }
            if (mPositiveButtonText != null) {
                dialog.setButton(DialogInterface.BUTTON_POSITIVE, mPositiveButtonText,
                        mPositiveButtonListener, null);
            }
            if (mNegativeButtonText != null) {
                dialog.setButton(DialogInterface.BUTTON_NEGATIVE, mNegativeButtonText,
                        mNegativeButtonListener, null);
            }
            // addView的实现
            if (mView != null) {
                if (mViewSpacingSpecified) {
                    dialog.setView(mView, mViewSpacingLeft, mViewSpacingTop, mViewSpacingRight,
                            mViewSpacingBottom);
                } else {
                    dialog.setView(mView);
                }
            }

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/118085.html原文链接:https://javaforall.net

(0)
上一篇 2021年12月13日 下午10:00
下一篇 2021年12月13日 下午10:00


相关推荐

  • CMPP讲解_cmpp2.0

    CMPP讲解_cmpp2.0  1 、缩略语解释  ISMG                         InternetShortMessageGateway     互联网短信网关

    2025年8月1日
    10
  • vs2019配置opencv什么版本_vs配置opencv

    vs2019配置opencv什么版本_vs配置opencv一、环境vs2019社区版、win1064位操作系统二、opencv配置步骤(共5步)1、下载OpenCV4.0.1,官网为opencv.org2、安装opencv,我的安装目录是D:\opencv-4.0.1-vc14_vc153、添加环境变量,在PATH中添加:D:\opencv-4.0.1-vc14_vc15\opencv\build\x64\vc15…

    2022年10月20日
    3
  • 数据库概念设计与逻辑设计[通俗易懂]

    数据库概念设计与逻辑设计[通俗易懂]一、概念设计概念设计的目的就是为了建立概念数据模型,概念数据模型也称为高级数据模型,之所以称为高级数据模型是因为它更接近于人的思维,而不是机器的思维,相比于关系模型更容易理解,此处的高级和低级的概念,与程序语言领域的高低级是一样的。我们通常称Java语言为高级语言,汇编语言为低级语言,是因为高级语言对于我们而言要比汇编语言更容易理解。关于概念数据模型,我们一般都会采用E-R图进行描述。E-R图的规则如下:1.实体采用矩形框,联系采用菱形框,属性采用椭圆形框。2.实体、联系、属性必须使用文字描

    2022年10月9日
    5
  • js防抖和节流 区别及实现方式

    js防抖和节流 区别及实现方式概念 函数防抖 debounce 触发高频事件后 n 秒内函数只会执行一次 如果 n 秒内高频事件再次被触发 则重新计算时间 函数节流 throttle 高频事件触发 但在 n 秒内只会执行一次 所以节流会稀释函数的执行频率 函数节流 throttle 与函数防抖 debounce 都是为了限制函数的执行频次 以优化函数触发频率过高导致的响应速度跟不上触发频率 出现延迟 假死或卡顿的现

    2026年3月20日
    2
  • ACE Studio64位

    ACE Studio64位

    2026年3月12日
    2
  • SpringBoot——关于Cache缓存获取值后修改的问题「建议收藏」

    SpringBoot——关于Cache缓存获取值后修改的问题「建议收藏」SpringBoot——关于Cache缓存获取值后修改的问题

    2022年4月23日
    39

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号