动态的弹出对话框

 

动态的弹出自定义对话框

调   //调用对话框,

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>

 

 

 

    /**

     *  菜单动画是否结束

     */

    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()

                     {

 

             

分享到:
评论
dengrui0917
  • 浏览: 8555 次
  • 性别: Icon_minigender_2
  • 来自: 南京
社区版块
存档分类
最新评论

你可能感兴趣的:(android,xml,OS)