android学习-对话框的动画弹出和动画消失

由于android的对话框不是一个View所以它没有setAnimation()这个方法,上网找了很多资料,好多都说的不完整或是抄人家的文章代码,这里我将我的理解总结如下,以后用到这方面的知识的时候以便查阅。

这里要实现一个自定义的对话框,在弹出和消失的过程中使用动画,这样用户的使用体验要好一点。还是先来总结一下需要用到的类:

AlertDialog:提示框

Window:这个类太强大了,现在我还啃不动它

上代码! 主Activity的代码

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 UserGuideActivity 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(keyCode == KeyEvent.KEYCODE_BACK){
		final AlertDialog dialog = new AlertDialog.Builder(this).create();
		dialog.show();
		// 用Window类来设置对话框的布局文件	
		Window win = dialog.getWindow();
		win.setContentView(R.layout.exit_dialog_layout);
		win.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND) ;// 显示对话框时,后面的Activity不变暗,可选操作。
		win.setWindowAnimations(R.style.dialogWindowAnim);// 这里就是指定动画的操作了,重点。
		// 如果可以,还可以指定这个对话框显示的位置,默认是屏幕的中心	
		//WindowManager.LayoutParams lp = new WindowManager.LayoutParams();
		//lp.alpha = 0.8f ;// 这是指定对话框的透明度,[0,1] float类型,所有要加f
		//lp.x = -100 ;
		//lp.y = -100 ;
		//win.setAttributes(lp);
			
		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();
				//finish();// 这里注释掉finish()是为了观看对话框消失的动画过程
			}
		});
			
		but_no.setOnClickListener(new View.OnClickListener() {
			@Override
			public void onClick(View v) {
				dialog.cancel();
				finish();
			}
		});	
	}
	return super.onKeyDown(keyCode, event);
   }   
}
这里主Activity的布局文件可以不设定,无所谓,反正也不用它。


现在来看看,对话框的布局文件:



	
    
    
    
    
这里的布局就不多说了,跟一般的布局一样,就是设置这些控件的摆放位置。


接下来,就来看看对话框的弹出和消失是怎样来调用动画的吧,首先在res下建立一个文件夹anim,在这个文件夹下创建两个动画文件

scale_dialog_enter.xml


  
    
    


scale_dialog_out.xml


  
    
    


建立好这两个文件之后还不够,还要将这两个文件分配到一个资源文件中去,当对话框在弹出和消失的时候,会根据对话框的状态来调用动画。在values文件夹下建立一个styles.xml文件,代码如下



    

 

接下来的事情,就差不多了。运行一下就ok。

今天在万花筒这款播放器中看到对话框中好多都是用动画来实现的,包括对话框的显示消失,对话框中按钮的点击,等等。一般基本View控件都可以用之前总结的四种动画方式来设定 http://blog.csdn.net/android_dong/article/details/9448321 ;








你可能感兴趣的:(android学习-对话框的动画弹出和动画消失)