如何在我自己的应用程序中获取拖动到 bin 的主屏幕行为?

Posted

技术标签:

【中文标题】如何在我自己的应用程序中获取拖动到 bin 的主屏幕行为?【英文标题】:How to get the homescreen behaviour of drag to bin, in my own application? 【发布时间】:2011-05-25 09:31:14 【问题描述】:

android 主屏幕上,可以通过将项目拖到垃圾箱来删除它们。

我想在我自己的应用程序中拥有类似的功能,在该应用程序中,我有一个包含自定义视图项的视图,我希望用户可以拖放这些视图项。

有没有简单的方法来实现这个功能?或者有人可以给我指点,指导我实现这一目标的可能困难方法吗?

【问题讨论】:

Sweet.. 我也想知道该怎么做.. 让我做一些研究,如果我发现了什么,我会回复你。 不错!我现在有一个工作的概念证明。对您的实施感兴趣。 您所指的Android启动器应用是开源的。我认为您可以通过查看源代码从他们的实现中学习。 android.git.kernel.org/?p=platform/packages/apps/… 【参考方案1】:

我假设您有一个类似主屏幕的应用程序,至少有一个包含您要拖放的项目的视图。

就像 Austyn Mahoney 在他的评论中所说,您可以参考 android 开源 主屏幕代码。但由于拖放是一个易于实现的功能,您也可以自行处理。

您需要将您的物品存放在例如数组。然后浏览事件类型。

在每个 ACTION_DOWN 上,您都需要检查一个项目是否被用户击中。例如。如果我们有圆作为项目,我们需要捕获当前的 ACTION_DOWN 坐标,以便我们可以检查它们是否在项目内,并根据 ACTION_DOWN 坐标获取用户将要拖动的项目的 ID。

ACTION_MOVE 上,您只需将当前的 x 和 y 坐标传递给项目即可在新位置重绘它。

这只是拖放功能。现在您需要测试该项目是否位于您称为 bin 的特定扇区中。因此,您在屏幕上定义了一个矩形。在 ACTION_MOVE 中,您的测试项目在该区域内,仅此而已。

只是一些拖放示例代码:

public boolean onTouchEvent(MotionEvent event)  
    int itemID = 0;
    int X = (int)event.getX(); 
    int Y = (int)event.getY(); 

        switch(event.getAction())
             case MotionEvent.ACTION_DOWN:
                for(Items item : dragable_item)

                    //center coords of the item
                    int centerX = item.getX() + 25;
                    int centerY = item.getY() + 25;

                    //calculate the distance (radius) from touch to item

                    //get item to drag
                    if(distance < 20)
                        itemId = item.getID(); break;
                    
                
             break;
             case MotionEvent.ACTION_MOVE:
                 if(itemID > 0)
                     Items[itemID-1].setX(X-25);
                     Items[itemID-1].setY(X-25);
                 
             break;
        
    
    invalidate(); return true;

如果您想深入了解代码,请查看anddev.org - drag and drop.

【讨论】:

以上是关于如何在我自己的应用程序中获取拖动到 bin 的主屏幕行为?的主要内容,如果未能解决你的问题,请参考以下文章

electron 在windows下窗口为啥不能拖动

win7双屏如何实现窗口从主屏移动到副屏?

如何使 PhoneGap iOS 应用程序的主窗口不可拖动?

魅族Pro5运行Ubuntu系统遭曝光

Win10 双屏:主屏和左右屏设置

ICON查看器轻量级图标测试工具ICON STRIKE:快速主屏查看