您的位置:首页 > 理论基础 > 计算机网络

Android自定义网络数据加载等待框的简单封装

2017-01-07 11:24 369 查看
先上效果图(在5.0以上机型显示效果,如果是4.0会变为灰色):



自定义Dialog如下:

public class LoadingCustom extends Dialog{
private static LoadingCustom mLoadingProgress;

public LoadingCustom(Context context) {
super(context);

}

public LoadingCustom(Context context, int theme) {
super(context, theme);
}
public static void showprogress(Context context,CharSequence message,boolean iscanCancel){
mLoadingProgress=new LoadingCustom(context,R.style.loading_dialog);//自定义style文件主要让背景变成透明并去掉标题部分<!-- 自定义loading dialog -->
<style name="loading_dialog" parent="Widget.AppCompat.ProgressBar">

<item name="android:windowNoTitle">true</item>
<item name="android:background">@android:color/transparent</item>
<!--弹出框时让背景变暗-->
<item name="android:backgroundDimEnabled">true</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowIsTranslucent">true</item>

</style>
//触摸外部无法取消,必须
mLoadingProgress.setCanceledOnTouchOutside(false);

mLoadingProgress.setTitle("");
mLoadingProgress.setContentView(R.layout.loading_layout);
mLoadingProgress.ge
4000
tWindow().setBackgroundDrawableResource(android.R.color.transparent);
if(message==null|| TextUtils.isEmpty(message)){
mLoadingProgress.findViewById(R.id.loading_tv).setVisibility(View.GONE);
}else {
TextView tv = (TextView) mLoadingProgress.findViewById(R.id.loading_tv);
tv.setText(message);
}
//按返回键响应是否取消等待框的显示
mLoadingProgress.setCancelable(iscanCancel);

mLoadingProgress.show();

}

public static void dismissprogress(){
if(mLoadingProgress!=null){

mLoadingProgress.dismiss();
}
}
}


//自定义的布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="@dimen/x240"
android:layout_height="@dimen/x240"
android:background="@drawable/loading_bg"
android:orientation="vertical"
android:gravity="center"
>
<ProgressBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/loading_pb"
<!--用于改变圆圈的颜色-->
android:indeterminateTint="@color/colorAccent"
android:indeterminateTintMode="src_atop"

/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="正在加载..."
android:textSize="16sp"
android:id="@+id/loading_tv"
/>

</LinearLayout>


如何使用,很简单在Activity,或Fragment中:比如下面触发按钮响应

bt_wait.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//只要一行代码
LoadingCustom.showprogress(getContext(),"正在加载",true);
//如果服务器响应数据返回我们只要调用  LoadingCustom.dismissProgress();即可
}
});


/**<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="8dp"></corners>
<solid android:color="@android:color/darker_gray"></solid>

</shape>
*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: