问题描述
|
我需要在我的应用中创建类似放大镜的功能。就像iPhone上的“放大镜”效果一样!
问题是我需要在弹出窗口中执行此操作,而我不知道如何使其正常工作!
弹出窗口显示我生成的颜色网格,并使用shapeDrawables逐一绘制。我要显示的颜色更大,当用户触摸并在弹出窗口(颜色网格)周围移动手指时将其放大。想法是在颜色上创建跟踪缩放效果,以便用户可以更清楚地看到他的手指当前所在的颜色。
问题是:
我似乎无法在此之上创建另一个弹出窗口,我认为是Android的限制吗?
如果我修改当前shapeDrawable,调整其大小,更改边界,则它需要重新显示弹出窗口才能生效(这当然是不可接受的)
因此,有人知道我可以在该弹出窗口上绘制的方法吗?
编辑:
我已经尝试使用“自定义Toast”对象解决此问题...但是并不能完全解决问题。它可以工作,但是吐司对象显示缓慢,因此触摸动作与用户在色格上的移动完全不同步。
解决方法
我不确定这是否对您有帮助,但是您可以通过使用第二个Activity来完成此操作...如果您在清单中包含以下属性,则该第二个Activity将使用Android的半透明主题:
现在,第二个活动将仅包含您在布局中放置的内容。就是说,您正在运行的“真实”活动仍将在其后面可见(在您未用新布局中的视图覆盖的任何地方)。
如果您确实想要类似于弹出窗口,则也可能更喜欢Theme.Dialog。
如果采用这种方法,要记住的一点是,您可能希望在新活动中重写onWindowFocusChanged(),并在失去焦点时重写finish()。此外,您需要弄清楚如何在两个活动之间共享数据。