Android笔记之为自定义对话框添加移动动画效果

Android笔记之为自定义对话框添加移动动画效果

给底部的对话框添加移动动画效果

可通过Window.setWindowAnimations(int resId)设置

SharingDialog.java

package com.bu_ish.sharing_dialog_example;

import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.view.WindowManager;
import android.widget.Toast; public class SharingDialog extends Dialog {
public SharingDialog(Context context) {
super(context, R.style.SharingDialog);
setCanceledOnTouchOutside(false);
setOnCancelListener(new OnCancelListener() {
@Override
public void onCancel(DialogInterface dialog) {
Toast.makeText(getContext(), "已取消", Toast.LENGTH_SHORT).show();
}
});
getWindow().setWindowAnimations(R.style.SharingDialogAnimation);
} @Override
public void show() {
super.show();
WindowManager.LayoutParams layoutParams = getWindow().getAttributes();
layoutParams.width = WindowManager.LayoutParams.MATCH_PARENT;
layoutParams.gravity = Gravity.BOTTOM;
getWindow().setAttributes(layoutParams);
} @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.dialog_sharing);
findViewById(R.id.cancelTextView).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
cancel();
}
});
}
}

动画style

    <style name="SharingDialogAnimation" parent="android:Animation">
<item name="android:windowEnterAnimation">@anim/sharing_dialog_show_animation</item>
<item name="android:windowExitAnimation">@anim/sharing_dialog_dismiss_animation</item>
</style>

对话框显示动画

sharing_dialog_show_animation.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="500"
android:fromYDelta="100%p"
android:toYDelta="0" />
</set>

对话框关闭动画

sharing_dialog_dismiss_animation.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="500"
android:fromYDelta="0"
android:toYDelta="100%p" />
</set>

P.S.

translate用于设置移动动画效果

完整Demo链接:https://pan.baidu.com/s/1hnFYo8i3SId8e3Ag0jKM3w,提取码:wgcr

上一篇:在图层上使用CATransform3D制做三维动画-b


下一篇:Java生鲜电商平台-小程序或者APP优惠券的设计与源码实战