一般当安卓请求接口的时候, 会有1秒左右的请求时间, 而在这个过程中需要一个正在加载中的效果.
我这里是写在了自定义的BaseActivity中
private LoadDialog loadDialog;
private boolean flag = false;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mContext = BaseActivity.this;
loadDialog = new LoadDialog(mContext, R.style.MyDialogStyle);
}
public boolean showDialog(boolean isShow) {
if (isShow) {
flag = true;
loadDialog.show();
} else {
flag = false;
loadDialog.dismiss();
}
return flag;
}
style中加入
<!-- 自定义网络加载 -->
<style name="MyDialogStyle">
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowFrame">@null</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
<item name="android:backgroundDimEnabled">true</item>
</style>
弹出框工具类
/**
* 自定义弹出框
*/
public class LoadDialog extends Dialog {
public LoadDialog(Context context, int theme) {
super(context, theme);
// TODO Auto-generated constructor stub
}
protected LoadDialog(Context context, boolean cancelable, OnCancelListener cancelListener) {
super(context, cancelable, cancelListener);
// TODO Auto-generated constructor stub
}
public LoadDialog(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
this.setContentView(R.layout.app_customdialog);
}
}
app_customdialog.xml 样式
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/loaddialog"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="10dp"
android:paddingBottom="10dp"
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:background="@drawable/shape_item"
android:layout_gravity="center"
android:gravity="center"
android:orientation="vertical" >
<!-- 定义一个中等环形进度条 -->
<ProgressBar
android:id="@+id/progress1"
android:layout_width="40dp"
android:layout_height="40dp" />
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="1dp"
android:text="加载中..."
android:textColor="#aaa"
android:textSize="14sp" />
</LinearLayout>
引用背景shape_item.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/white"/>
<corners android:radius="5dp"/>
</shape>
在activity中调用 记得继承你的自定义BaseActivity
showDialog(true); //为true的时候是关闭加载框, 一般放到请求前面
showDialog(false); //加载完毕, 关闭加载框
网友评论