方法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>
浙公网安备 33010602011771号