我正在使用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..谢谢你!!
发布于 2014-03-07 05:48:25
您必须在视图中执行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;
}
});发布于 2015-02-25 11:58:25
您可以将您的代码更改为下面的代码,此代码对我有效。:D
video_view.getRootView().setOnDragListener(new OnDragListener() {..your code..}https://stackoverflow.com/questions/20630680
复制相似问题