效果图如下:
1.synchronize_photo_dialog布局
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ProgressBar
android:id="@+id/pb_dialog_show"
android:layout_width="@dimen/spacing_35"
android:layout_height="@dimen/spacing_35"
android:layout_centerInParent="true"
android:layout_marginTop="@dimen/spacing_36"
android:indeterminateDrawable="@drawable/dialog_drawable" />
<TextView
android:id="@+id/tvcontent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/pb_dialog_show"
android:layout_centerHorizontal="true"
android:layout_marginTop="@dimen/spacing_10"
android:layout_marginBottom="@dimen/spacing_26"
android:textColor="@color/white"
android:textSize="@dimen/font_18" />
</RelativeLayout>
补充:dialog_drawable,就是文字上面那个图案,会一直转圈圈
<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@mipmap/mine_clear_loading"
android:fromDegrees="0"
android:pivotX="50%"
android:pivotY="50%"
android:toDegrees="360">
<!--
fromDegrees 开始时的角度
toDegrees 结束时旋转的角度
pivotX X坐标的开始位置(0%-100%)
pivotY Y坐标的开始位置(0%-100%)
-->
</rotate>
2. 自定义dialog,一些属性已给注释了
/**
* 图片同步dialog
* Created by Administrator on 2019/12/9
*
* @author mcl
*/
public class SynchronizePhotoDialog extends Dialog {
private String content;
public SynchronizePhotoDialog(Context context,String content){
super(context, R.style.SynchronizePhotoDialog);
this.content=content;
initView();
initWindow();
}
private void initView() {
setContentView(R.layout.synchronize_photo_dialog);
((TextView) findViewById(R.id.tvcontent)).setText(content);
setCanceledOnTouchOutside(true);//点击外部是否可以消失
setCancelable(false);//点击或按物理返回键是否可以消失(若想点击不消失、按物理返回键消失,可重写onKeyDown方法,如后面所写)
}
private void initWindow(){
WindowManager.LayoutParams p = this.getWindow().getAttributes();//获取对话框的信息
p.width=p.MATCH_PARENT;//设置宽度
p.height=p.MATCH_PARENT;//设置高度
p.alpha = 0.7f; //取值为0-1之间 透明度 0是全透明,1是不透明
p.dimAmount=1f; //取值为0-1之间 暗度
getWindow().setAttributes(p);//生效
}
/**
* 按返回键可以消失弹窗
* @param keyCode
* @param event
* @return
*/
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
switch (keyCode) {
case KeyEvent.KEYCODE_BACK:
if (SynchronizePhotoDialog.this.isShowing())
SynchronizePhotoDialog.this.dismiss();
break;
}
return true;
}
}
3.样式SynchronizePhotoDialog
<!-- 自定义dialog的样式 ,用于同步图片-->
<style name="SynchronizePhotoDialog">
<item name="android:windowFrame">@null</item><!--边框-->
<item name="android:windowIsFloating">true</item><!--是否浮现在activity之上-->
<item name="android:windowIsTranslucent">false</item><!--是否半透明-->
<item name="android:windowNoTitle">true</item><!--是否无标题-->
<item name="android:windowBackground">@color/dialog_color</item><!--背景色及透明-->
<item name="android:backgroundDimEnabled">false</item><!-- 是否背景模糊 -->
<item name="android:backgroundDimAmount">0.7</item> <!-- 设置背景模糊的透明度-->
</style>