当前位置: 代码迷 >> Android >> 小弟我这个处理图片移动是不是有有关问题
  详细解决方案

小弟我这个处理图片移动是不是有有关问题

热度:44   发布时间:2016-05-01 21:37:11.0
我这个处理图片移动是不是有问题
我的代码:
Java code
private OnTouchListener moveEventListener = new OnTouchListener() {         int lastX, lastY;                @Override         public boolean onTouch(View v, MotionEvent event) {             switch (event.getAction()) {             case MotionEvent.ACTION_DOWN:                lastX = (int) event.getX();                 lastY = (int) event.getY();                 break;             case MotionEvent.ACTION_MOVE:                 int dx = (int) event.getX() - lastX;                int dy = (int) event.getY() - lastY;                                int movex = v.getLeft() + dx;                int movey = v.getTop() + dy;                mapView.panBy(new Point(movex, movey));                v.invalidate();                  break;                            case MotionEvent.ACTION_UP:                 break;             }             return true;         }     };



移动的时候手指移动一点,图片移动会比较多,而且我在按住一个点不动时在屏幕上转圈滑动 图片就不知道移动到什么地方去了,谷歌和百度地图的那种手指点上去后移动图片跟着手指移动的狠好,这个事怎么弄的?我这个应该怎么改呢?我这个里面的问题在哪里?


还有就是很多图片组合起来的一个大图要显示出来,用了缓存,异步线程下载等等,移动时画面闪烁感很强,这个事什么原因?我用的DRAWbiTMAP来显示的图片。应该从那方面入手》?

------解决方案--------------------
case MotionEvent.ACTION_DOWN:
lastX = (int) event.getX(); 
lastY = (int) event.getY();
因为在这个地方,当你执行拖动的时候,ACTION_DOWN只执行了一次,lastX、lastY在获得值之后进入ACTION_MOVE之后就在业没有发生过变化,自然在
 case MotionEvent.ACTION_MOVE: 
int dx = (int) event.getX() - lastX;
int dy = (int) event.getY() - lastY;

int movex = v.getLeft() + dx;
int movey = v.getTop() + dy;
mapView.panBy(new Point(movex, movey));
v.invalidate();
break;
这个地方的movex、movey所得到的值就达不到你的要求了
  相关解决方案