预期行为:
真正发生的事情:
为什么?
向上滑动:
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromYDelta="100%p"
android:toYDelta="75%p"
android:fillAfter="true"
android:duration="1000" />
向下滑动:
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromYDelta="75%p"
android:toYDelta="100%p"
android:fillAfter="true"
android:duration="1000" />
风格:
<style name="dialog_animation">
<item name="android:windowEnterAnimation">@anim/slide_up</item>
<item name="android:windowExitAnimation">@anim/slide_down</item>
</style>
代码:
dialog = new Dialog(this, android.R.style.Theme_Translucent_NoTitleBar);
dialog.setContentView(R.layout.toast_goal_added);
dialog.getWindow().getAttributes().windowAnimations = R.style.dialog_animation;
dialog.setCancelable(true);
Handler handler = null;
handler = new Handler();
handler.postDelayed(new Runnable(){
public void run(){
dialog.cancel();
dialog.dismiss();
}
}, 3500);
dialog.show();
答案 0 :(得分:0)
您的代码确实描述了以下内容:
解决方案 - 您需要确定对话框在动画后应保留的实际位置。使用自定义坐标进行对话时,这是完全相同的事情。但现在你可以轻松添加75%的屏幕。
要开始的一些代码:
Dialog dlg = <code to create custom dialog>;
Window window = dlg.getWindow();
WindowManager.LayoutParams wlp = window.getAttributes();
wlp.gravity = Gravity.BOTTOM;
wlp.flags &= ~WindowManager.LayoutParams.FLAG_DIM_BEHIND;
window.setAttributes(wlp);
在这里,您可以在屏幕尺寸的加入中添加对话框的Y坐标。
答案 1 :(得分:0)
我设法使用以下代码执行此操作,但您需要考虑重要的事情。 TranslationAnimation不允许使用onClick事件,因为只有坐标被更改但视图本身没有被移动,这意味着视图不会移动到任何地方,它只是看起来像是在移动。
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="true"
android:fillEnabled="true"
android:fillAfter="true">
<translate
android:duration="200"
android:fromYDelta="100%p"
android:toYDelta="75%p" />
<translate
android:duration="200"
android:startOffset="2500"
android:fromYDelta="0%p"
android:toYDelta="25%p" />
</set>