1.写一个全屏显示菊花dialog
res/layout/dlg_srx.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:gravity="center_vertical"> <ProgressBar android:id="@+id/w3_progress" android:layout_width="32dp" android:layout_height="32dp" android:layout_gravity="center" android:layout_marginBottom="8dp" android:indeterminateBehavior="repeat" android:indeterminateDrawable="@drawable/anim" /> <TextView android:id="@+id/w3_ptext" android:layout_width="wrap_content" android:layout_height="18dp" android:layout_gravity="center" android:layout_marginBottom="51dp" android:textSize="14sp"/> </LinearLayout>
res/layout/activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:contentDescription=".MainActivity"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/button01" android:text="点击弹出对话框"/> </LinearLayout>
res/drawable/anim.xml
<?xml version="1.0" encoding="utf-8"?> <animated-rotate xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/loading" android:fromDegrees="0.0" android:pivotX="50.0%" android:pivotY="50.0%" android:toDegrees="360.0" />
res/drawable/loading.png
res/values/strings.xml
<resources> <string name="app_name">My Application</string> <string name="w3_shut_message">正在关闭...</string> </resources>
res/value/styles.xml
<resources> <!-- Base application theme. --> <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <!-- Customize your theme here. --> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> </style> <style name="w3shutDlg" parent="android:Theme.Dialog"> </style> </resources>
java代码: 在java中调用显示xml
MainActivity.java
Button mBtn = (Button)findViewById(R.id.button01); mBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { showMyDialog(MainActivity.this); } });
private void showMyDialog(Context context){
//1.方法1可以显示一个菊花dialog,是对话框不是全屏 /*AlertDialog dlg = new AlertDialog.Builder(MainActivity.this, R.style.testDlg).create(); dlg.show(); dlg.setCancelable(false); dlg.setContentView(R.layout.dlg_srx);*/ //this effect is ok.
//2.方法2可以显示一个菊花dialog,是对话框不是全屏
/* ProgressDialog dlg = new ProgressDialog(MainActivity.this,R.style.w3shutDlg); dlg.show(); dlg.setCancelable(false); dlg.setContentView(R.layout.dlg_srx);*/ //dlg.show();//这句如果放后面达不到菊花效果
//方法3可以显示一个全屏的菊花转圈 GradientDrawable background = new GradientDrawable(context); background.setAlpha((int) (1.0f * 255)); Dialog d = new Dialog(context, R.style.w3shutDlg); // Window initialization Window window = d.getWindow(); window.getDecorView(); window.getAttributes().width = ViewGroup.LayoutParams.MATCH_PARENT; window.getAttributes().height = ViewGroup.LayoutParams.MATCH_PARENT; window.requestFeature(Window.FEATURE_NO_TITLE); window.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND | WindowManager.LayoutParams.FLAG_LAYOUT_INSET_DECOR); //window.addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN); window.setBackgroundDrawable(new ColorDrawable(Color.BLACK));//background d.setContentView(R.layout.dlg_srx); d.setCancelable(false); //int color = 0xff00ff00;//Utils.getColorAttr(mContext, com.android.systemui.R.attr.wallpaperTextColor); ProgressBar bar = d.findViewById(R.id.w3_progress); // bar.getIndeterminateDrawable().setTint(color); TextView message = d.findViewById(R.id.w3_ptext); //message.setTextColor(color); message.setText(R.string.w3_shut_message); //Point displaySize = new Point(); // context.getDisplay().getRealSize(displaySize); //getWindowManager().getDefaultDisplay().getRealSize(displaySize); //background.setScreenSize(displaySize.x, displaySize.y); d.show(); } }

显示如下这种时,加一个window.getDecorView();

2.写一个显示菊花dialog对话框
用方法1,2调用即可。配合的xml用这个
res/layout/dlg_srx.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"> <ProgressBar android:id="@+id/loading" android:layout_width="30dp" android:layout_height="30dp" android:layout_gravity="center_horizontal" android:layout_marginTop="20dp" android:indeterminateBehavior="repeat" android:indeterminateDrawable="@drawable/anim" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_marginTop="5dp" android:text="加载中..." /> </LinearLayout>
对话框显示效果大概是这种:

////////////////////////////下面的不用看了
只需要改xml相关即可,java代码不用动
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:contentDescription=".MainActivity">
<ProgressBar
android:id="@+id/loading"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_gravity="center_horizontal"
android:layout_marginTop="20dp"
android:indeterminateBehavior="repeat"
android:indeterminateDrawable="@drawable/anim" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="5dp"
android:text="加载中..." />
</LinearLayout>
drawable/anim.xml
<?xml version="1.0" encoding="utf-8"?>
<animated-rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@drawable/loading"
android:fromDegrees="0.0"
android:pivotX="50.0%"
android:pivotY="50.0%"
android:toDegrees="360.0" />
drawable/loading.png
把那一张loading图片放到这里即可

参考实现网址:
https://blog.csdn.net/zhangphil/article/details/79453384
浙公网安备 33010602011771号