具有动画效果的对话框

本文将介绍android的对话框在弹出和消失的过程中怎样使用动画效果,这里我采用的是自己定义的对话框,采用AlertDialog来加载,我们现在看看AlertDialog的类继承结构

java.lang.Object 
   ↳ android.app.Dialog 
     ↳ android.app.AlertDialog 
从继承结构可以看出,AlertDialog不是View的子类,所以,就不能直接对该对象直接调用setAnimation()。但是,我们可以通过Window对象来为对话框设置动画。

具体的代码如下:

首先建立一个对话框的布局文件 exit_dialog_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="500dp"
    android:layout_height="200dp"
    android:background="@drawable/dialog_bg"
    >
	<TextView  
		android:id="@+id/dialog_title"
    	android:layout_width="fill_parent" 
    	android:layout_height="wrap_content" 
    	android:text="信息提示"
    	android:textSize="28sp"
    	android:gravity="center_horizontal"
    />
    
    <TextView
    	android:id="@+id/dialog_msg"
    	android:layout_width="fill_parent"
    	android:layout_height="wrap_content"
    	android:text="下次开机是否自动进入此向导?"
    	android:textSize="33sp"
    	android:gravity="center_horizontal"
    	android:layout_below="@id/dialog_title"
    	android:layout_alignLeft="@id/dialog_title"
    	android:layout_marginTop="20dp"
    />
    
    <Button 
    	android:id="@+id/dialog_but1"
    	android:layout_width="120dp"
    	android:layout_height="60dp"
    	android:text="好的"
    	android:textSize="26sp"
    	android:layout_below="@id/dialog_msg"
    	android:layout_marginTop="30dp"
    	android:layout_marginLeft="87dp"
    />
    
    <Button 
    	android:id="@+id/dialog_but2"
    	android:layout_width="120dp"
    	android:layout_height="60dp"
    	android:text="不用了"
    	android:textSize="26sp"
    	android:layout_below="@id/dialog_msg"
    	android:layout_marginTop="30dp"
    	android:layout_toRightOf="@id/dialog_but1"
    	android:layout_marginLeft="100dp"
    />
    
</RelativeLayout>
为了对话框好看一点,我这里给它指定了一个背景图片,当然背景图片的有无不影响功能。

接下来,看看主程序是怎样调用的,下面是主Activity的代码。

package dxd.android.dialog_animation;

import android.app.Activity;
import android.app.AlertDialog;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;

public class Dialog_AnimationActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }

	@Override
	public boolean onKeyDown(int keyCode, KeyEvent event) {
		if(KeyEvent.KEYCODE_BACK == keyCode){
			showDialog();
		}
		return super.onKeyDown(keyCode, event);
	}
    
	public void showDialog(){
		final AlertDialog dialog = new AlertDialog.Builder(this).create();
		dialog.show();
		
		Window win = dialog.getWindow();
		win.setContentView(R.layout.exit_dialog_layout);
		win.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND) ;
		// 就是在这里设置对话框的动画,
		win.setWindowAnimations(R.style.dialogWindowAnim);
		
		final Button but_yes = (Button)win.findViewById(R.id.dialog_but1);
		final Button but_no = (Button)win.findViewById(R.id.dialog_but2);
		but_yes.setOnClickListener(new View.OnClickListener() {
			@Override
			public void onClick(View v) {
				dialog.cancel();
			}
		});
		
		but_no.setOnClickListener(new View.OnClickListener() {
			@Override
			public void onClick(View v) {
				dialog.cancel();
			}
		});	
	}
    
}
我们可以看出,是获取对话框中的window对象来设置动画效果的。

对话框的用处在android开发中是用的非常多的,原生对话框不怎么好看,有时候需要自己写对话框+动画效果,就很好看了。

关于对话框的总结 见之前的总结:http://blog.csdn.net/android_dong/article/details/9299707






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值