在一个绝对布局的activity里面,有很多张ImageView,他们的位置是随机的,可能会重叠,怎么拖动每一张图片?
这是我的代码LayoutParams lp = lp = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, 0, 0);
ScrollView sv = sv = (ScrollView) views.get(0).findViewById(R.id.home_scrollview);
View selectImg;
ImageView iv1 = (ImageView) view.findViewById(R.id.iv1);
ImageView iv2 = (ImageView) view.findViewById(R.id.iv2);
ImageView iv3 = (ImageView) view.findViewById(R.id.iv3);
ImageView iv4 = (ImageView) view.findViewById(R.id.iv4);
List<ImageView> ivs = new ArrayList<ImageView>();
ivs.add(iv1);
ivs.add(iv2);
ivs.add(iv3);
ivs.add(iv4);
for (int i = 0; i < ivs.size(); i++)
{
ivs.get(i).setOnTouchListener(new OnTouchListener()
{
@Override
public boolean onTouch(View view2, MotionEvent e)
{
if (e.getAction() == MotionEvent.ACTION_DOWN)
{
selectImg = view2;
offsetX = (int) e.getX();
offsetY = (int) e.getY();
}
return false;
}
});
}
view.setOnTouchListener(new OnTouchListener()
{
@Override
public boolean onTouch(View view2, MotionEvent e)
{
if (selectImg != null)
{
if (e.getAction() == MotionEvent.ACTION_MOVE)
{
lp.x = (int) e.getX() - offsetX;
lp.y = (int) e.getY() - offsetY +sv.getScrollY();
selectImg.setLayoutParams(lp);
}
else if (e.getAction() == MotionEvent.ACTION_UP)
{
selectImg = null;
}
return true;
}
else
{
return false;
}
}
});运行结果,是一拖动图片,全部图片叠成一张,一起移动,有没有什么办法,可以让没张图片自己移动?
还是有什么别的方法,请各位大侠赐教!!!!
这是我的代码LayoutParams lp = lp = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, 0, 0);
ScrollView sv = sv = (ScrollView) views.get(0).findViewById(R.id.home_scrollview);
View selectImg;
ImageView iv1 = (ImageView) view.findViewById(R.id.iv1);
ImageView iv2 = (ImageView) view.findViewById(R.id.iv2);
ImageView iv3 = (ImageView) view.findViewById(R.id.iv3);
ImageView iv4 = (ImageView) view.findViewById(R.id.iv4);
List<ImageView> ivs = new ArrayList<ImageView>();
ivs.add(iv1);
ivs.add(iv2);
ivs.add(iv3);
ivs.add(iv4);
for (int i = 0; i < ivs.size(); i++)
{
ivs.get(i).setOnTouchListener(new OnTouchListener()
{
@Override
public boolean onTouch(View view2, MotionEvent e)
{
if (e.getAction() == MotionEvent.ACTION_DOWN)
{
selectImg = view2;
offsetX = (int) e.getX();
offsetY = (int) e.getY();
}
return false;
}
});
}
view.setOnTouchListener(new OnTouchListener()
{
@Override
public boolean onTouch(View view2, MotionEvent e)
{
if (selectImg != null)
{
if (e.getAction() == MotionEvent.ACTION_MOVE)
{
lp.x = (int) e.getX() - offsetX;
lp.y = (int) e.getY() - offsetY +sv.getScrollY();
selectImg.setLayoutParams(lp);
}
else if (e.getAction() == MotionEvent.ACTION_UP)
{
selectImg = null;
}
return true;
}
else
{
return false;
}
}
});运行结果,是一拖动图片,全部图片叠成一张,一起移动,有没有什么办法,可以让没张图片自己移动?
还是有什么别的方法,请各位大侠赐教!!!!
解决方案 »
- 华为终端
- SQLite数据库 CursorFactory的一个疑问
- 关于android工程里R类的问题
- 有用过foxit sdk的同学吗?
- 请教下,GeoDiary2 那种浮动于activity上的ui怎么实现的
- TextView 里面明明显示的有数据,为什么调用它的三个函数:getLinesCount==0;getBaseline==-1;getBottom==0?
- 这个效果如何做
- android中关于activity内存的释放问题
- android中这样的效果如何实现
- Android listview回滚到顶部问题
- android 百度地图 异常
- 【小白提问】为什么每次打开ECLIPSE某个项目的代码时,每行代码前都是XXX CAN NOT BE RESOLVED?
如果是这样的话,其实就是drag drop,对吧。实现这个功能不是很难的。
我可以说下大概思路:
1,定义出相应的接口,IDropTarget, IDragSource, IDataObject,等等。
2,实现一个Drag controller,把从activity或root view的事件传给drag controller,由它去发起drag,这里面需要实现:a)查找 drag source,b)调用drag source的相应方法,c)把drag enter, drag level等事件传给drop target
3, 你的imageview去实现IDragSource,因为它是一个拖拽源。
4, 要接收imageview 的去实现IDropTarget。
5,规定好drag source与drop target之间要传递的数据。