1. 程式人生 > >Activity實現的Dialog(並不是 用Dialog 的樣式實現)

Activity實現的Dialog(並不是 用Dialog 的樣式實現)

優點:

               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);
}
}
效果