Android 自定义dialog

本文作者小游分享了如何在Android中实现自定义Dialog,包括创建自定义动画效果的详细步骤,以及在style.xml中添加动画内容。文章提到了参考资源和深入动画效果的详解链接。
摘要由CSDN通过智能技术生成

本文档为个人博客文档系统的备份版本、作者:小游、作者博客:点击访问

虽然网上的对话框还是挺好看的,但是实现不了我想要的效果,所以每办法,只能自己来实现了,不过好在其实实现并不是很难。

实际代码如下:

public class FriendDialog extends Dialog{
    private Context context;
    public FriendDialog(Context context){
        super(context);
        this.context=context;
        init();
    }

    /**
     * 设置头部背景
     * @param drawable drable对象
     * @return 返回本身
     */
    public FriendDialog setHead(Drawable drawable){
        //获取clipdrable对象
        Bitmap bm=((BitmapDrawable)drawable).getBitmap();
        bm=Bitmap.createBitmap(bm,0,bm.getHeight()/3,bm.getWidth(),Tools.dp2px(context,150));
        dialogHead.setBackground(new BitmapDrawable(context.getResources(),bm));
        return this;
    }

    /**
     * 设置diaolog的标题
     * @param title 标题内容
     * @return 返回本身
     */
    public FriendDialog setTiTle(String title){
        this.dialogTitle.setText(title);
        return this;
    }

    /**
     * 控件的初始化
     */
    private void init(){
        View view=LayoutInflater.from(context).inflate(R.layout.commponent_dialog,null);
        setContentView(view);
        ButterKnife.bind(this,view);
        //清除背景颜色
		Objects.requireNonNull(getWindow()).setBackgroundDrawableResource(android.R.color.transparent);
        Window dialogWindow = getWindow();
        assert dialogWindow != null;
        dialogWindow.setWindowAnimations(R.style.DialogAnimal);
        WindowManager.LayoutParams lp = dialogWindow.getAttributes();
        DisplayMetrics d = context.getResources().getDisplayMetrics();
        lp.width = (int) (d.widthPixels * 0.9);
        dialogWindow.setAttributes(lp);
    }
}

自定义dialog动画效果

参考文章:https://blog.csdn.net/qq_30937147/article/details/51756559
https://www.jianshu.com/p/ccf6a3c23c72

自己新建一个anim的文件夹,里面分别加上进入和退出的效果

这里只展示一个

<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:duration="500"
        android:fromYDelta="100%"
        android:toYDelta="0" />
</set>

自己到style。xml中添加下面的内容

 <!--弹窗动画-->
    <style name="mystyle" parent="android:Animation">
        <!--//进入时的动画-->
        <item name="@android:windowEnterAnimation">@anim/dialog_enter</item>
        <!--//退出时的动画-->
        <item name="@android:windowExitAnimation">@anim/dialog_exit</item>
    </style>

动画效果详解

这里有一个非常详细的文章介绍

https://wiki.jikexueyuan.com/project/android-animation/1.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值