虽然网上的对话框还是挺好看的,但是实现不了我想要的效果,所以每办法,只能自己来实现了,不过好在其实实现并不是很难。
实际代码如下:
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