文章目录
工具类ProgressDialog
package bang.lib.base;
import android.app.Dialog;
import android.content.Context;
import android.view.Display;
import android.view.View;
import android.view.WindowManager;
import android.widget.FrameLayout;
import android.widget.LinearLayout;
import bang.lib.R;
/**
* @autor YangTianFu
* @Date 2019/4/19 9:36
* @Description
*/
public class ProgressDialog {
private Dialog dialog;
private Display display;
public ProgressDialog(Context context) {
WindowManager windowManager = (WindowManager) context
.getSystemService(Context.WINDOW_SERVICE);
display = windowManager.getDefaultDisplay();
dialog = new Dialog(context, R.style.AlertDialogStyle);
}
public ProgressDialog builder() {
return this;
}
public ProgressDialog addView(View view) {
dialog.setContentView(view);
view.setLayoutParams(new FrameLayout.LayoutParams((int) (display
.getWidth() * 0.85), LinearLayout.LayoutParams.WRAP_CONTENT));
return this;
}
/**
* 设置布局的比例
* @param view
* @param scale 0到1 0.3
* @return
*/
public ProgressDialog addView(View view, float scale) {
dialog.setContentView(view);
view.setLayoutParams(new FrameLayout.LayoutParams((int) (display
.getWidth() * scale), LinearLayout.LayoutParams.WRAP_CONTENT));
return this;
}
public void show() {
dialog.show();
}
public ProgressDialog setCancelable(boolean flag) {
dialog.setCancelable(flag);
return this;
}
public void dissmis() {
dialog.dismiss();
}
}
AlertDialogStyle
android:backgroundDimEnabled 属性设置是否允许出现阴影,false为不允许,也就是dialog全透明状态
<style name="AlertDialogStyle" parent="@android:style/Theme.Dialog">
<item name="android:background">#00000000</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowFrame">@null</item>
<item name="android:backgroundDimEnabled">false</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsTranslucent">true</item>
</style>
BaseAcvitity中统一配置
/**
* 显示正在加载对话框
*/
public ProgressDialog progressDialog;
/**
* @param tip 提示文字
* @param flag 是否触摸取消
*/
public void showProgressDialog(String tip, boolean flag) {
View view = LayoutInflater.from(this).inflate(R.layout.view_dialog_progress, null, false);
progressDialog = new ProgressDialog(this).addView(view, 0.3f).setCancelable(flag).builder();
progressDialog.show();
TextView textView = view.findViewById(R.id.dialog_progress_tip);
textView.setText(tip);
}
/**
* 关闭正在加载对话框
*/
public void dismissProgressDialog() {
if (progressDialog != null) {
progressDialog.dissmis();
}
}
自定义dialog显示样式view_dialog_progress.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="vertical"
android:padding="5dp">
<!--android:background="@drawable/shap_black_alpha"-->
<!-- style="?android:attr/progressBarStyleSmallInverse"-->
<!-- android:indeterminateDrawable="@drawable/progress"-->
<ProgressBar
style="@style/Base.Widget.AppCompat.ProgressBar"
android:layout_width="35dp"
android:layout_height="35dp"
android:layout_marginTop="10dp"
android:indeterminateTint="@color/gray_linebg" />
<!--自定义样式-->
<!--<ProgressBar-->
<!--style="@style/Base.Widget.AppCompat.ProgressBar"-->
<!--android:layout_width="wrap_content"-->
<!--android:layout_height="wrap_content"-->
<!--android:layout_gravity="center_vertical"-->
<!--android:indeterminateTint="@color/gray_linebg"-->
<!--android:visibility="visible" />-->
<TextView
android:id="@+id/dialog_progress_tip"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:text="加载中…"
android:textColor="@color/black_txt_color" />
</LinearLayout>
自定义进度条样式
drawable 中创建 文件progress.xml
<?xml version="1.0" encoding="utf-8"?>
<animated-rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromDegrees="0"
android:pivotX="50%"
android:pivotY="50%"
android:toDegrees="360">
<shape
android:innerRadiusRatio="3"
android:shape="ring"
android:thicknessRatio="8"
android:useLevel="false">
<gradient
android:centerColor="#666"
android:centerY="0.50"
android:endColor="#6666"
android:startColor="#6666"
android:type="sweep"
android:useLevel="false" />
</shape>
</animated-rotate>
dialog 窗体背景
shap_black_alpha.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="5dp" />
<solid android:color="#55000000" />
</shape>