附加多种动画效果思路的自定义Dialog

因为工作需要,最近写了几个Dialog的类,后来出于新鲜和好奇,就研究了网上一些比较常用的Dialog的Demo,总体感觉效果绚丽,本质还是不变。这里先整理和推荐两个查询中搜索到的github项目

这个是集合了多种Android经典Demo的整合地址,并且在不断更新完善:

https://github.com/XXApple/AndroidLibs

这个是个人推荐和感觉不错的Dialog,尤其是其中的动画效果,文章结尾会大致列一下其中的动画创建,其他的用法之类的网上都有大量的雷同说明,在此就不再多做解释,重点标注一下他内置的动画库

https://github.com/H07000223/FlycoDialog_Master

另外就是个人写的一个自定义的Dialog,效果一般,只是出于总结的习惯发布上来。

自定义的Dialog类一般是继承AlertDialog或者Dialog类,定义自己的布局View和Style显示风格,不过根据之前的开发经验,因为Android6.0以上的版本权限问题,没有弹窗悬浮权限的异常情况下,也曾经通过Activity来定义了一个弹窗效果,相当于将Activity界面的背景设定为半透明,拉取出来之后覆盖在原Activity的Dialog,这种方式可以避免Dialog没有权限崩溃问题,亦或者不会出现没有context载体而导致dialog显示的异常。但是UI效果确不敢恭维,只是没办法的将就之计。好了,题外话不多数说了,定义自己的Dialog。

首先从FlycoDialog_Master提取出了两个基类BaseDialog和BaseAnimatorSet,用于弹窗和动画效果。

定义自己的FirshDeviceBindDialo继承BaseDialog,需要实现两个方法onCreateView和setUiBeforShow

setUiBeforShow用于弹窗加载显示之前处理逻辑和数据,onCreateView用来填充自己的布局文件。

@Override
public View onCreateView() {
    widthScale(0.85f);
    showAnim(new FlipTopEnter());
    dismissAnim(new FlipHorizontalExit());
    View inflate = View.inflate(mContext, R.layout.first_device_bind_dialog, null);
    medal_iv = (ImageView) inflate.findViewById(R.id.medal_iv);
    device_bind_close = (ImageView) inflate.findViewById(R.id.device_bind_close);
    togo_bind = (Button) inflate.findViewById(R.id.togo_bind);
    togo_purchase = (Button) inflate.findViewById(R.id.togo_purchase);
    device_bind_title = (TextView) inflate.findViewById(R.id.device_bind_title);
    setCanceledOnTouchOutside(false);
    setFlickerAnimation(medal_iv);
    return inflate;
}
以上代码步骤分别对应设定动画效果、加载View控件、设定图片的闪烁动画。

开放两个对外的点击接口

/**
 * 设置确定按钮和取消被点击的接口
 */
public interface onPurchaseOnclickListener {
    public void onPurchaseClick();
}

public interface onBindOnclickListener {
    public void onBindClick();
}

主界面创建和显示对应的弹窗

// TODO: 2018/5/18 显示弹窗
final FirshDeviceBindDialog FirshDeviceBind_Dialog = new FirshDeviceBindDialog(MainActivity.this);
if (FirshDeviceBind_Dialog != null) {
    FirshDeviceBind_Dialog.setPurchase(new FirshDeviceBindDialog.onPurchaseOnclickListener() {
        @Override
        public void onPurchaseClick() {
            //确认

            FirshDeviceBind_Dialog.dismiss();
        }
    }).setBind(new FirshDeviceBindDialog.onBindOnclickListener() {
        @Override
        public void onBindClick() {
            //退出

            FirshDeviceBind_Dialog.dismiss();
        }
    }).show();
}


对应Demo下载地址:https://download.youkuaiyun.com/download/wangyetongsss/10423045

如果你喜欢这样的动画效果,也可以从FirshDeviceBindDialo库中直接提取对应的动画效果,或者自己定义不同效果,让弹窗变的更优雅酷炫


卡牌、旋转、淡入等等的动画效果,相当棒!!



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值