在过去的几个月里,我一直致力于在我的主屏幕替代Android中实现小部件支持,而且它证明相当困难。我现在可以在主屏幕上添加和删除小部件,但是它们无法调整大小或移动。目前我想要实现的是调整它们的大小。为此,我将每个窗口小部件嵌入到视图中,在其中放置叠加层以确保触摸事件不会被其下方的窗口小部件捕获(这在过去的尝试中造成了麻烦)。
我现在拥有的是容器的这种布局; http://www.hastebin.com/uwocaxukel.xml
小部件放在标识为FrameLayout
的{{1}}中。正如您在下面的屏幕截图中看到的那样,每个边框的中间都有一个橙色圆点。
现在我一直试图做的是抓住触摸事件,弄清楚用户是否试图拖动其中一个边框(widgetContainer
),如果是,则更改所需的属性MotionEvent.ACTION_MOVE
对象并在视图上调用LayoutParams
。这很挑剔,不太理想。触摸事件通常会停止注册,因为用户拖动的速度比视图刷新的速度快〜用户不再在正在侦听触摸事件的视图上,或者边框太薄而无法击中。
到目前为止,这一切都非常挑剔。但是还有其他应用似乎非常完美。是否有图书馆,我忽视的课程,或其他我可以用来实现目标的东西?
这是一个有点工作的例子,但非常挑剔,而且不是远程用户友好的; https://github.com/RobinJ1995/be.robinj.ubuntu/blob/869d48af2e7a3d8f0332f84edd2a8cd28564424a/UbuntuLauncher/app/src/main/java/be/robinj/ubuntu/widgets/WidgetHostView.java#L75