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();
}
});
}
}
效果图:
<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();
}
});
}
}
效果图:
相关文章推荐
- android2.3.4----7.adb分析(未完成)
- 高手速成android开源项目【View篇】
- android2.3.4----6.camera与上层的交互
- [置顶] Android 仿QQ首页的消息和电话的切换(Viewpager+frgment)
- Android系统驱动开发琐碎——解决spidev读写过程没有时钟信号的问题
- android SpannableString使用详解,替代多个TextView拼凑实现的用法,实现多个样式,如加粗,超链接等
- Android_apk的安装(待完善)
- 高手速成android开源项目【导航篇】
- Android数据加密之Des加密
- Android学习笔记13:EditText的使用
- android的NotificationManager的使用,快捷通知栏
- Activity的生命周期
- Android入门第一篇
- Android总结篇系列:Android广播机制
- android 中xml读写
- android studio 代码混淆
- android 模拟航拍遥控
- Android百度地图应用之创建显示地图
- Android Studio 更新升级之增量升级
- 怎样在Android中使用Loaders