0

我想实现一个弹出窗口,该弹出窗口应该出现在活动顶部以及可能位于该活动顶部的任何对话框顶部。此外,当弹出窗口在屏幕上时,后台的活动和对话框应该仍然是交互式的(即它们应该对触摸做出反应并且所有按钮等应该仍然有效)。x 时间后,弹出窗口应滑出屏幕。

我提出了以下想法,但它们都有一些缺点:

1.自定义吐司 虽然吐司总是出现在活动和对话框的顶部,但我认为它不能滑入和滑出。

2.自定义对话框 对话框也将出现在活动和对话框之上,但这里的问题是,当我的自定义对话框在屏幕上时,活动和所有以前打开的对话框将不再是交互的(即它们不会接触)。

3. Activity 中的 ImageView 这种方法的问题很明显:它总是出现在对话框后面。

任何帮助将不胜感激。谢谢 !

4

2 回答 2

1

以下是您的选择:

1)和吐司一起去,牺牲你的动画进/出

2)继续对话并牺牲触摸事件

3)这是不可行的

我什至无法想到您将如何使用自定义视图来做到这一点,它太复杂了,而且在 Google UX 设计中不推荐使用。

也许对于您的问题的另一种解决方案的一些启发,请尝试这里:http: //developer.android.com/design/index.html

要问的真正问题是,你为什么想要这个工具提示?你想达到什么目的?有了这些答案,您可以寻找更多 *Android-esq' 解决方案

于 2012-05-24T14:46:48.463 回答
0

你真的需要一个视图子类,而不是一个对话框。使用 addView() 添加您的视图,使用 removeView() 删除它。

通过布局/样式,您可以使它看起来像一个对话框。

您可以使用视图动画来实现滑入/滑出效果。

Animation slideIn = new TranslateAnimation (windowWidth, 0, 0, 0);
slideIn.setDuration (400);
slideIn.setInterpolator(new LinearInterpolator());
dialogView.startAnimation(slideIn);

Animation slideOut = new TranslateAnimation (0, windowWidth, 0, 0);
slideOut.setDuration (400);
slideOut.setInterpolator(new LinearInterpolator());
dialogView.startAnimation(slideOut);

并在滑出后使用 AnimationListener() onAnimationEnd() 删除视图。

您需要调整 TranslateAnimation 的 x/y 参数以达到您想要的效果,假设您希望对话框以 x 和 y 轴为中心...

于 2012-05-24T16:41:58.770 回答