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 



posted on 2020-08-31 09:47  snowdrop  阅读(841)  评论(0)    收藏  举报