Activity实现的Dialog(并不是 用Dialog 的样式实现)

来源:互联网 发布:区块链 数据确权 编辑:程序博客网 时间:2024/04/28 05:14

优点:

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









源码:http://pan.baidu.com/s/1c0lwhNi

0 0