Activity實現的Dialog(並不是 用Dialog 的樣式實現)
阿新 • • 發佈:2019-01-25
優點:
dialg
位置可以顯示在任意位置,在Layout佈局的時候可以自定義
對話方塊的事件處理可以直接在Activity中處理。其他地方要顯示Dialog的話,直接StartActivity/StartActivityFotresult方法可以通過Intent進行互動。
避免Activity destory 了Dialog還在顯示,導致的應用崩潰。
首先定義我們自己的theme ,注意:在定義Activity的style時候,最好繼承系統Theme,我這裡沒有,因為我用的是Activity,所以沒事,如果用的是AppCompatActivity,必須繼承AppTheme,否則報錯
<style name="CustomActivityDialogStyle"> <item name="android:windowBackground">@android:color/transparent</item> <!--是否半透明--> <item name="android:windowIsTranslucent">true</item> <!--是否有標題欄--> <item name="android:windowNoTitle">true</item> </style>
在manifest中給指定的Activity用上我們自定義的theme
<activity android:theme="@style/CustomActivityDialogStyle" android:name=".ActivityDialog" android:label="@string/title_activity_activity_dialog" > </activity>
Activity 的佈局 activity_activity_dialog.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.liaoli.activitydialogdemo.ActivityDialog"> <RelativeLayout android:layout_centerInParent="true" android:background="#6cb3ff" android:layout_width="200dp" android:layout_height="wrap_content"> <TextView android:id="@+id/title" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:minHeight="40dp" android:text="升級提醒" /> <TextView android:id="@+id/message" android:layout_below="@+id/title" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:paddingLeft="5dp" android:paddingRight="5dp" android:minHeight="40dp" android:text="新升級萌萌的,快點升級吧,驚喜多多哦!!!!" /> <TextView android:id="@+id/bt" android:layout_below="@+id/message" android:layout_width="match_parent" android:layout_height="wrap_content" android:minHeight="40dp" android:gravity="center" android:text="下載" /> </RelativeLayout> </RelativeLayout>
ActivityDialog.java
package com.example.liaoli.activitydialogdemo; import android.app.Activity; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.TextView; import android.widget.Toast; public class ActivityDialog extends Activity { private TextView bt; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_activity_dialog); bt = (TextView) findViewById(R.id.bt); bt.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(ActivityDialog.this,"後臺下載中",Toast.LENGTH_SHORT).show(); finish(); } }); } }
MainActivity的程式碼
package com.example.liaoli.activitydialogdemo; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void showDialog(View view){ Intent i = new Intent(this,ActivityDialog.class); startActivity(i); } }效果