自定义了一个imageview控件,可以随意拖动和缩放。
遇到了一个棘手的问题,就是每当拖动完控件以后,执行某些操作的时候,该控件的位置就会还原到初始位置,
目前想到的解决方法是每次移动完控件后把它的位置保存在数据库中,
经过尝试,问题已经解决,
解决方法是:捕捉ACTION_UP动作,当发现这个动作以后执行方法onTouchUp()
附上该方法代码如下
void onTouchUp(MotionEvent event) { int current_x = (int) event.getRawX() - (int) event.getX(); int current_y = (int) event.getRawY() - (int) event.getY();// 图片左上角获取的是相对于屏幕左上角的坐标 param.leftMargin = current_x; param.topMargin = current_y; img.setLayoutParams(param); }猜测原因:因为拖动的控件是一个自定义控件,在控件被拖动时,其实控件在布局中的位置并没有真正发生变化。所以当有事件触发布局发生变化时,该控件的位置会被还原。这里使用的方法是每当拖动操作完成时会有触发一个ACTION_UP动作,当遇到这个动作时增加一段代码手动将控件最后的位置赋给它。
控件拖动后,某些事件引起的布局重置位置还原问题,布布扣,bubuko.com
原文:http://blog.csdn.net/yxg190221/article/details/20460347