一 实例说明
实例说明.png二 实现步骤
1. 在 app\res 下面新建一个 anim 文件
2. 在 anim 下创建 XML 文件。
3. 重写 onKeyDown() 方法,该方法判断是否单击 “返回” 按钮,如果单击则显示带动画效果的对话框。
dialog_enter.xml 文件
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="200"
android:fromXDelta="-100%"
android:fromYDelta="-100%">
</translate>
dialog_exit.xml 文件
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="200"
android:toXDelta="100%"
android:toYDelta="100%"
android:fromYDelta="0">
</translate>
MainActivity
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK){
//创建对话框
AlertDialog dlg = new AlertDialog.Builder(this).create();
dlg.show(); //显示对话框
Window window = dlg.getWindow(); //获取对话框窗口
window.setGravity(Gravity.CENTER); //设置对话框中心位置
window.setWindowAnimations(R.style.mystyle); //添加动画
window.setContentView(R.layout.dialog_layout); //设置对话框布局
button = window.findViewById(R.id.dialog_button);//点击事件
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Log.d("MainActivity", "onClick: ");
}
});
}
return super.onKeyDown(keyCode, event);
}
translate 位置转移动画效果
image.png
整型值:
fromXDelta 属性为动画起始时 X坐标上的位置
toXDelta 属性为动画结束时 X坐标上的位置
fromYDelta 属性为动画起始时 Y坐标上的位置
toYDelta 属性为动画结束时 Y坐标上的位置
注意:
没有指定,
默认是以自己为相对参照物
长整型值:
duration 属性为动画持续时间
说明: 时间以毫秒为单位
在这些属性里面还可以加上%和p,例如:
android:toXDelta="100%",表示自身的100%,也就是从View自己的位置开始。
android:toXDelta="80%p",表示父层View的80%,是以它父层View为参照的。
网友评论