【发布时间】:2014-12-09 23:09:53
【问题描述】:
我正在开发一款 Android 游戏。
我想知道拖放是否只是解决此问题的错误方法。我正在寻找的效果是有一个按钮,当用户长按时,将启动一个拖放效果,以投影为目标。
此自定义拖动阴影将持续存在,直到用户释放目标阴影。我有自定义阴影工作并且正在响应拖动事件。我不确定的是如何在不实际移动它们开始拖动的按钮的情况下使整个工作正常工作。
是否像不将原始视图(按钮)传递给阴影生成器一样简单?
编辑
添加了我用来启动拖动的触摸监听器的定义。
private final class MyTouchListener implements OnTouchListener {
public boolean onTouch(View view, MotionEvent motionEvent) {
if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) {
ClipData data = ClipData.newPlainText("", "");
//DragShadowBuilder shadowBuilder = new View.DragShadowBuilder(view);
view.startDrag(data, new TargetDragShadowBuilder(view), view, 0);
view.setVisibility(View.INVISIBLE);
return true;
} else {
return false;
}
}
}
我在此处设置可见性,但坦率地说,我正在尝试按照此处的教程进行操作:
http://www.vogella.com/tutorials/AndroidDragAndDrop/article.html
也许这是错误的方法。我基本上希望执行以下步骤:
1) 检测以按钮开始的拖动事件
2) 在不以任何方式更改按钮的情况下,我希望我指定的图片的自定义投影(具有透明度)在用户拖过屏幕时出现在用户手指下方。
最终我需要弄清楚如何使阴影闪烁,或在消失前徘徊几秒钟,并获得用户松开手指的位置。看起来从文档中我可以从 ACTION_DRAG_LOCATION...?
【问题讨论】:
-
什么是“目标”,你想移动谁的影子?
-
我不太明白这个问题...在Android中,拖动操作只会“移动”
DragShadowBuilder构造的阴影,原始视图不会改变(除非你正在这样做明确)。究竟是什么问题?如果需要,您可以使用DragShadowBuilder的自定义实现来提供完全不同的影子。 -
让我理解一下:你想拖动一个下方有阴影的按钮,当你离开它时,按钮又回到它的初始位置?在它发布的那一刻你会怎么做?
-
我有一个按钮。我想允许用户将手指从该按钮拖到视图的其他位置。现在按钮正在用他们的手指移动。我的自定义阴影是一个大红色圆圈。一旦用户松开手指,圆圈和按钮就消失了。我想要的行为是按钮完全不受影响,当用户拖动手指时红色圆圈出现,松开时消失。
标签: android android-layout drag-and-drop android-view