六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 53|回复: 0

动态的弹出对话框

[复制链接]

升级  30%

3

主题

3

主题

3

主题

童生

Rank: 1

积分
15
 楼主| 发表于 2013-1-15 02:20:13 | 显示全部楼层 |阅读模式
 动态的弹出自定义对话框
调   //调用对话框,

Private void CreateDialog(){

View commentDialogView = LayoutInflater.from(context).inflate(

              R.layout.detail_dialog, GameDetail.this, false);

       FusionField.viewHandler.sendMessage(FusionField.viewHandler

              .obtainMessage(FusionCode.SHOW_DIALOG_FROW_VIEW,

                     commentDialogView));
}
    /**
     * 使对话框消失

     */

    private void dismissDialogView()

    {

       sendHandlerMessage(FusionCode.SHOW_DIALOG_FROW_VIEW, null);

    }

 

    /**

     * 发送Handler消息

     * @param what 消息体

     * @param obj 对象

     */

    private void sendHandlerMessage(int what, Object obj)

    {

       FusionField.viewHandler.sendMessage(FusionField.viewHandler

              .obtainMessage(what, obj));

    }
 
 对话框实现代码
 
1.res/anim文件下添加两的xml文件 scale_dialog_dismiss.xml scale_dialog_show.xml
Sscale_dialog_dismiss.xml
<?xml version="1.0" encoding="UTF-8"?>

<set xmlns:android="http://schemas.android.com/apk/res/android"

    android:shareInterpolator="false">

    <scale android:interpolator="@android:anim/accelerate_interpolator"

       android:fromXScale="1.0" android:toXScale="0.0" android:fromYScale="1.0"

       android:toYScale="0.0" android:pivotX="50%" android:pivotY="50%"

       android:fillAfter="false" android:duration="300"

       android:repeatMode="restart" />

</set>
 
Scale_dialog_show.xml
<?xml version="1.0" encoding="UTF-8"?>

<set xmlns:android="http://schemas.android.com/apk/res/android"

    android:shareInterpolator="false">

    <scale android:interpolator="@android:anim/accelerate_interpolator"

       android:fromXScale="1.0" android:toXScale="0.0" android:fromYScale="1.0"

       android:toYScale="0.0" android:pivotX="50%" android:pivotY="50%"

       android:fillAfter="false" android:duration="300"

       android:repeatMode="restart" />

</set>
 
 
 
[table=560][tr][td=1,1,655]
    /**

     *  菜单动画是否结束

     */

    boolean isDialogAniEnd = true;

    /**

     *  当前正在显示的view

     */

    View currentView;

    Animation dialogShowAnimation;

    Animation dialogDismissAnimation;

 

//初始化两个动画

    @Override

    protected void onStart()

    {

       dialogShowAnimation = AnimationUtils.loadAnimation(this,

              R.anim.scale_dialog_show);

       dialogDismissAnimation = AnimationUtils.loadAnimation(this,

              R.anim.scale_dialog_dismiss);

}

Handler viewHandler = new Handler()

    {

       public void handleMessage(android.os.Message msg)

       {

           switch (msg.what)

           {

               case FusionCode.SHOW_DIALOG_FROW_VIEW:

              // 显示自定义动画对话框

              if (aniDialogView == null && msg != null && msg.obj != null)

              {

                  isDialogAniEnd = true;

              WindowManager.LayoutParams winlp = new WindowManager.LayoutParams(

                         320, 480,

                         WindowManager.LayoutParams.TYPE_APPLICATION,

                         WindowManager.LayoutParams.FLAG_FULLSCREEN,

                         PixelFormat.TRANSLUCENT);

                  winlp.gravity = Gravity.CENTER;

                     //给对话框负初始值

                  aniDialogView = new RelativeLayout(Main.this);

                  aniDialogView.setBackgroundColor(0x99000000);

                  aniDialogView.addView((View) msg.obj);

                  aniDialogView.setGravity(Gravity.CENTER);

                  showAnimationDialog(aniDialogView, (View) msg.obj, winlp);

              }

              else

              {//关闭对话框

                  if (isDialogAniEnd)

                  {

                     isDialogAniEnd = false;

                     dismissAnimationDialog(aniDialogView);

                  }

              }     

              break;

             default:

              break;

           }

       }

}

/**

        * 显示自定义动画对话框

        * @param obj     要显示的view

        * @param winlp     添加到页面的参数

        */

       private void showAnimationDialog(View baseLayout, View contentView,

              android.view.WindowManager.LayoutParams winlp)

       {

           if (mWindowManager != null)

           {

              mWindowManager.addView(baseLayout, winlp);

              contentView.startAnimation(dialogShowAnimation);

           }

       };
 
/**

        * 取消自定义动画对话框

        * @param obj     要显示的view

        * @param winlp     添加到页面的参数

        */

       private void dismissAnimationDialog(RelativeLayout aniDialogView)

       {

           if (mWindowManager != null && aniDialogView != null)

           {

              dialogDismissAnimation

                     .setAnimationListener(new AnimationListener()

                     {

 


<span style="font-size: 10pt; color: black; font-family: "Courier New";"><span style="">
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表