我想实现一个弹出窗口,该弹出窗口应该在活动的顶部滑动,并且可以在该活动之上的任何对话框之上。此外,当弹出窗口在屏幕上时,后台的活动和对话框仍然应该是交互式的(即它们应该对触摸做出反应,并且所有按钮等应该仍然有效)。经过x倍的时间后,弹出窗口应滑出屏幕。
我提出了以下想法,但所有这些想法都有某种缺点:
1. 自定义吐司 虽然吐司总是会出现在活动和对话框之上,但我不认为它可以滑入并滑出。
2。自定义对话框 对话框也会出现在活动和对话框之上,但问题在于,当我的自定义对话框出现在屏幕上时,活动和之前打开的所有对话框将不再是交互式的(即它们不会触及)。
第3。活动中的ImageView 这种方法的问题很明显:它总是出现在对话框后面。
任何帮助都将受到高度赞赏。谢谢!
答案 0 :(得分:1)
以下是您的选择:
1)与Toast一起去处理你的动画进/出
2)继续对话并牺牲触摸事件
3)这不可行
我甚至无法想到如何使用自定义视图执行此操作,它太复杂而且不是Google UX设计中推荐的内容。
也许为了解决问题的另一个解决方案的灵感,请尝试此处:http://developer.android.com/design/index.html
要问的真正问题是,为什么要这个工具提示?你想要实现什么目标?有了这些答案,您可以寻找更多* Android-esq'溶液
答案 1 :(得分:0)
您确实需要View子类,而不是Dialog。使用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轴为中心...