案例为动画实现Dialog退出APP
Activity
package com.mingrisoft.animdialog;
import android.app.Activity;
import android.app.AlertDialog;
import android.os.Bundle;
import android.view.Gravity;
import android.view.KeyEvent;
import android.view.View;
import android.view.Window;
import android.widget.Button;public class MainActivity extends Activity {private Button button_determine, button_cancel; //定义对话框按钮private AlertDialog dlg; //定义对话框@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}/*** 判断当单击手机返回按钮时,从手机顶部向下移动对话* 再次单击返回按钮,对话框将从中间向底部移动消失对话框*/@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {//判断如果单击了返回按钮if (keyCode == KeyEvent.KEYCODE_BACK) {//创建对话框实例dlg=new AlertDialog.Builder(this).create();dlg.show(); //显示对话框Window window = dlg.getWindow(); //获取对话框窗口window.setGravity(Gravity.CENTER); //此处设置dialog显示在中心位置window.setWindowAnimations(R.style.mystyle); //添加动画window.setContentView(R.layout.dialog_layout); //设置对话框布局文件//获取对话框确定按钮button_determine = (Button) window.findViewById(R.id.btn_determine);//获取对话框取消按钮button_cancel = (Button) window.findViewById(R.id.btn_cancel);initEvent(); //调用初始化事件方法}return super.onKeyDown(keyCode, event);}/*** 该方法出事对话框中按钮的事件,单击确定按钮退出该应用* 单击取消按钮,对话框将移动至底部消失*/private void initEvent() {button_determine.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {dlg.dismiss(); //对话框移动到底部消失finish(); //关闭当前应用}});button_cancel.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {dlg.dismiss(); //对话框移动到底部消失}});}
}
dialog_layout
<?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"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:gravity="center_horizontal"android:orientation="vertical"><!--标题--><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:paddingTop="20dp"android:text="@string/text_title1"android:textColor="@color/black"android:textSize="16sp" /><!--提示文字--><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:paddingBottom="50dp"android:paddingLeft="20dp"android:paddingRight="20dp"android:paddingTop="20dp"android:text="@string/text_title2"android:textColor="@color/blue"android:textSize="20sp" /><!--线--><Viewandroid:layout_width="match_parent"android:layout_height="1dp"android:background="@color/yellow" /></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"><!--确定按钮--><Buttonandroid:id="@+id/btn_determine"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:background="@null"android:text="@string/text_btn_determine"android:textColor="@color/orange"android:textSize="20sp" /><!--线--><Viewandroid:layout_width="1dp"android:layout_height="match_parent"android:background="@color/yellow" /><!--取消按钮--><Buttonandroid:id="@+id/btn_cancel"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:background="@null"android:text="@string/text_btn_cancel"android:textColor="@color/orange"android:textSize="20sp" /></LinearLayout></LinearLayout>
动画
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"><!--从中间到底部退出--><translateandroid:fromYDelta="0"android:toYDelta="100%"android:duration="200"/>
</set><?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"><!--从上进入到中间--><translateandroid:duration="200"android:fromYDelta="-100%"></translate>
</set>
Style
<resources><!-- Base application theme. --><style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"><!-- Customize your theme here. --><item name="colorPrimary">@color/colorPrimary</item><item name="colorPrimaryDark">@color/colorPrimaryDark</item><item name="colorAccent">@color/colorAccent</item></style><style name="mystyle" parent="android:Animation"><!--进入时的动画--><item name="@android:windowEnterAnimation">@anim/dialog_enter</item><!--退出时的动画--><item name="@android:windowExitAnimation">@anim/dialog_exit</item></style></resources>
xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:id="@+id/activity_main"android:layout_width="match_parent"android:layout_height="match_parent"android:background="@drawable/bg"tools:context="com.mingrisoft.animdialog.MainActivity"></RelativeLayout>
color XML
<?xml version="1.0" encoding="utf-8"?>
<resources><color name="colorPrimary">#3F51B5</color><color name="colorPrimaryDark">#FF5B3F</color><color name="colorAccent">#FF4081</color><color name="black">#000000</color><color name="blue">#475764</color><color name="yellow">#D2AA8C</color><color name="orange">#F16D27</color>
</resources>