您的位置:首页 > 移动开发 > Android开发

Android中自定义ProgressDialog,实现全屏显示的效果

2016-06-13 16:03 573 查看
自定义的ProgressDialog:

<span style="font-size:18px;">public class LoadingProgressDialog extends ProgressDialog {

public LoadingProgressDialog(Context context) {
super(context, R.style.Progress_Dialog);
setCancelable(true);
setCanceledOnTouchOutside(false);
}

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout_progress_dialog);
}
}</span>

style:
<span style="font-size:18px;"> <style name="Progress.Dialog" parent="@android:style/Theme.Holo.Light.Dialog">
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
<!--<item name="android:windowNoTitle">true</item>-->
<!--<item name="android:windowIsFloating">true</item>-->
<!--<item name="android:backgroundDimEnabled">true</item>-->
</style></span>

XML:
<span style="font-size:18px;"><?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">

<ProgressBar
android:id="@+id/progress"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:background="#00000000"
android:indeterminateDrawable="@drawable/progress_small"/>
</RelativeLayout></span>
下面写的两个模版:
1.Fragment

public class BaseFragment extends Fragment {
private LoadingProgressDialog mLoadingProgressDialog;
private Activity actvity;
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
actvity = getActivity();
mLoadingProgressDialog = new LoadingProgressDialog(getActivity());
}

/**
* 显示dialog
*/
protected void showDialog() {
if (getActivity() != null && !getActivity().isFinishing() && mLoadingProgressDialog != null && mLoadingProgressDialog.isShowing()) {
mLoadingProgressDialog.show();
}
}

/**
* 关闭dialog
*/
protected void dismissDialog() {
if (getActivity() != null && !getActivity().isFinishing() && mLoadingProgressDialog != null && mLoadingProgressDialog.isShowing()) {
mLoadingProgressDialog.dismiss();
}
}

@Override
public void onDestroy() {
super.onDestroy();
dismissDialog();
mLoadingProgressDialog = null;
}
}2.FragmentActivity
public class BaseFragmentActivity extends FragmentActivity {

private LoadingProgressDialog mLoadingProgressDialog;

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mLoadingProgressDialog = new LoadingProgressDialog(this);
}

/**
* 显示dialog
*/
protected void showDialog() {
if (!isFinishing() && mLoadingProgressDialog != null && mLoadingProgressDialog.isShowing()) {
mLoadingProgressDialog.show();
}
}

/**
* 关闭dialog
*/
protected void dismissDialog() {
if (!isFinishing() && mLoadingProgressDialog != null && mLoadingProgressDialog.isShowing()) {
mLoadingProgressDialog.dismiss();
}
}

@Override
protected void onDestroy() {
super.onDestroy();
dismissDialog();
mLoadingProgressDialog = null;
}
}

如果你的界面是Fragment,可以继承BaseFragment,如果是Activity就继承BaseFragmentActivity。

通过例子展示下效果:

public class MainActivity extends AppCompatActivity {
private Button btn;
private LoadingProgressDialog mLoadingProgressDialog;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn = (Button) findViewById(R.id.btn);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mLoadingProgressDialog = new LoadingProgressDialog(MainActivity.this);
mLoadingProgressDialog.show();
}
});
}
}

效果图:

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