自定义dialog


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

实际代码如下:

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


文章作者: 小游
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 小游 !
  目录