方法1:

在A.java中,new另一个Dialog.java的子类B,在B中创建一个dialog(含xml布局)

方法2:

在A.java中new另一个普通类B.java, B非Dialog子类,在B中创建dialog,这样的dialog

MainActivity.java

  MyDialog mDialog = new MyDialog(this);
        //mDialog.show();
        mDialog.init();

MyDialog.java

 public class MyDialog implements View.OnClickListener {
    private  Context context;
    private String TAG = "MyDialog";
    public MyDialog(Context context){
      // super(context);
        //super(context);
       this.context = context;
    }

  public void init() {
        Dialog d = new Dialog(context, R.style.abnorDlg);
        // 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_abnor);
        d.setCancelable(false);
        d.show();
        Button tvConfirm = (Button) d.findViewById(R.id.abnor_btn);

        tvConfirm.setOnClickListener(this);
}
    @Override
    public void onClick(View v) {
        Log.e(TAG,"srx-11-click button");
        switch (v.getId()) {
            case R.id.abnor_btn:
                Log.e(TAG,"srx--click button");
                break;
        }

    }
}

dlg_abnor.xml

res/layout/dlg_abnor.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">
    <Space
        android:layout_width="match_parent"
        android:layout_height="38dp"
        />

    <TextView
        android:id="@+id/abnor_ptext"
        android:layout_width="wrap_content"
        android:layout_height="45dp"
        android:gravity="center"
        android:layout_marginBottom="38dp"
        android:text="@string/abnor_message"
        android:textColor="#f2f3fa"
        android:textSize="14sp"/>
    <Button
        android:id="@+id/abnor_btn"
        android:layout_width="match_parent"
        android:layout_height="36dp"
        android:text="@string/abnor_restore_run"
        android:textSize="14sp"
        android:textColor="#FFFFFFFF"
        android:background="@drawable/btn_cir"/>
</LinearLayout>

res/drawable/btn_cir.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <solid android:color="#3c3c47"/>
    <corners
        android:topLeftRadius="20dip"
        android:topRightRadius="20dip"
        android:bottomLeftRadius="20dip"
    android:bottomRightRadius="20dip"/>
</shape>

res/values/styles.xml,可以通过这一句把dialog设置成全屏,且dialog上面距离可以随意改变,否则dialog上面会有个title,举例没办法随意调。

    <style name="abnorDlg" parent="@android:style/Theme.Dialog">
        <item name="android:windowNoTitle">true</item>
    </style>

 

 

注意在android8上加这些的时候,需要在theme.xml, symbol.xml(layout,string, drawable等都需要), id.xml(上述2个id)中都定义一下,编译framework-res.apk, 才可以识别到。

 

 

方法3:

在A.java中调用一个dialog的布局显示全屏dialog, 此dialog无自己所在的java类

MainActivity.java

package com.example.suruixue.myapplication;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.graphics.Color;
//import android.graphics.drawable.ColorDrawable;
//import android.graphics.drawable.GradientDrawable;
import com.android.internal.colorextraction.ColorExtractor.GradientColors;
import com.android.internal.colorextraction.drawable.GradientDrawable;

import android.graphics.drawable.ColorDrawable;
import android.os.Environment;
import android.os.LocaleList;
import android.preference.SwitchPreference;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import android.telephony.ServiceState;
import android.telephony.TelephonyManager;
//import android.telephony.SprdPhoneSupport;
//import android.os.SystemProperties;
//import com.sprd.internal.telephony.TeleUtils;
import android.util.Log;
//import com.android.internal.telephony.TelephonyProperties;
import android.os.SystemProperties;
import java.util.Locale;
import android.graphics.Point;

public class MainActivity extends AppCompatActivity {
    //   public class MainActivity extends Activity {

    TelephonyManager mtelephonyManager;
    String mProvidersName = null;
    String TAG = "srxMainActivity";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
Button mBtn = (Button)findViewById(R.id.button01);
        mBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Log.d(TAG,"srx--onclick");
                showMyDialog(MainActivity.this);
            }
        });

    }

private void showMyDialog(Context  context){
       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);
        d.show();
    }
}

 

res/drawable/btn_cir.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <solid android:color="#3c3c47"/>
    <corners
        android:topLeftRadius="20dip"
        android:topRightRadius="20dip"
        android:bottomLeftRadius="20dip"
    android:bottomRightRadius="20dip"/>
</shape>

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:onClick="onClickButton"
        />
</LinearLayout>

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">

    <TextView
        android:id="@+id/abnor_ptext"
        android:layout_width="wrap_content"
        android:layout_height="48dp"
        android:gravity="center"
        android:layout_marginBottom="20dp"
        android:text="@string/abnor_message"
        android:textColor="#f2f3fa"
        android:textSize="14sp"/>
    <Button
        android:layout_width="match_parent"
        android:layout_height="36dp"
        android:text="@string/abnor_restore_run"
        android:textSize="14sp"
        android:textColor="#FFFFFFFF"
        android:background="@drawable/btn_cir"/>
</LinearLayout>

res/values/strings.xml

<resources>
    <string name="app_name">My Application</string>
    <string name="abnor_message">比较累\n休息一下</string>
    <string name="w3_shut_message2">休息一下</string>
    <string name="abnor_restore_run">恢复运行</string>
</resources>

 

posted on 2020-09-09 17:04  snowdrop  阅读(451)  评论(0)    收藏  举报