我正在使用VideoView
播放视频。我想在将其从原始位置拖动到新位置时更改其位置。我使用了以下代码:
video_view.setOnDragListener(new OnDragListener() {
@Override
public boolean onDrag(View v, DragEvent event) {
// TODO Auto-generated method stub
switch(event.getAction())
{
case DragEvent.ACTION_DRAG_ENTERED:
break;
case DragEvent.ACTION_DRAG_STARTED:
return true;
case DragEvent.ACTION_DRAG_LOCATION:
return true;
case DragEvent.ACTION_DROP:
float x=event.getX();
float y=event.getY();
int top=(int)x+height;
int bottom=(int)y+height;
int left=(int)x+width;
int right=(int)y+width;
video_view.layout(left, top, right, bottom);
v.invalidate();
和xml是
<VideoView
android:id="@+id/video"
android:layout_height="100dp"
android:layout_width="100dp"/>
在上面的代码中,video_view是我videoview
的对象。但是当我试图拖动它时,什么都没有改变,所以我做错了什么?或者我需要使用FrameLayout
因为我在这里使用相对布局吗?
与此同时,我对DragEvent.ACTION_DRAG_ENTERED
和DragEvent.ACTION_DRAG_STARTED
和
DragEvent.ACTION_DRAG_EXITED
和DragEvent.ACTION_DRAG_ENDED
..谢谢!!
答案 0 :(得分:2)
您必须在视图中开始执行startDrag方法的拖动过程:
video_view.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) {
ClipData data = ClipData.newPlainText("", "");
View.DragShadowBuilder shadowBuilder = new View.DragShadowBuilder(view);
view.startDrag(data, shadowBuilder, view, 0);
return false;
}
return true;
}
});
答案 1 :(得分:0)
您将代码更改为以下代码,此代码适用于我。 :d
video_view.getRootView().setOnDragListener(new OnDragListener() {..your code..}