在android中查找拖动事件的距离

时间:2014-05-20 19:09:31

标签: android

我有两个textView元素,android:id="@+id/num1"android:id="@+id/num2"。我希望用户从num1拖动到num2,我想找到他们在拖动中覆盖的距离。为此,我尝试使用onDragListener,如下面的.java文件中所示。但是,我不确定如何使用onDragListener找到拖动的距离,我调查了ACTION_DRAG_STARTEDACTION_DRAG_EXITED,但我无法操纵那些我需要的东西。如果有人能弄清楚如何做到这一点,我们将非常感谢您的帮助!

我用于拖动监听器的链接 http://developer.android.com/reference/android/view/View.OnDragListener.html http://developer.android.com/guide/topics/ui/drag-drop.html

.java档案

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);

        final View dragLayout = findViewById(R.id.dragLayout);        
        final TextView num1 = (TextView)findViewById(R.id.num1);
        final TextView num2 = (TextView)findViewById(R.id.num2);

        dragLayout.setOnDragListener(new View.OnDragListener() {
            @Override
            public boolean onDrag(View v, DragEvent event) {

            //Do something here with the drag event

            return true;
        }
    });
}   

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
            // Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.main, menu);
            return true;
    }

}

提前致谢

1 个答案:

答案 0 :(得分:0)

要做到这一点,你必须保持第一个事件,直到第二个事件发生,如下所示:

  1. 将拖动开始事件存储在成员变量
  2. 在拖动结束时,计算拖动开始事件的x / y坐标与拖动停止事件之间的距离。
  3. 编辑:如果您想要记录STROKE长度,您必须改变您的方法:

    1. 拖动开始上,将拖动开始事件存储在“lastMouseEvent”成员变量中。还将成员变量double mouseStrokeLength设置为0.0。这将用于累积行程长度。
    2. 鼠标移动上,如果lastMouseEvent不为null,则计算从lastMouseEvent到当前鼠标移动事件的距离。将结果距离添加到mouseStrokeLength。最后将当前鼠标移动事件存储为lastMouseEvent,为下一轮做好准备。
    3. 拖动结束上,将最后计算的距离添加到mouseStrokeLength并使用它。将lastMouseEvent设置为null。