动态的弹出自定义对话框
调 //调用对话框,
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=""> |