public boolean onTouch(View v, MotionEvent event) { // TODO Auto-generated method stub switch (event.getAction() & MotionEvent.ACTION_MASK) { case MotionEvent.ACTION_DOWN: // 手指压下屏幕 mode = DRAG; flag = 1; isSwitching=false; currentMatrix.set(imageView.getImageMatrix()); startdx = event.getX(); startPoint.set(event.getX(),event.getY()); break; case MotionEvent.ACTION_MOVE: if (mode == DRAG) { enddx = event.getX(); flag = 2; isSwitching = false; }else if(mode==ZOOM){ float endDis=distance(event);//结束距离 if(endDis>10f){ float scale=endDis/startDis; Bitmap bas =((BitmapDrawable) bmd[index]).getBitmap(); matrix.set(currentMatrix); matrix.postScale(scale, scale,midPoint.x,midPoint.y); int hdx=0; int wdy=0; wdy=bas.getWidth(); hdx=bas.getHeight(); if(bas.getWidth()>wide){ wdy=wide; }else{ wdy=bas.getWidth(); } if(bas.getHeight()>height){ hdx=height; }else{ hdx=bas.getHeight(); } bitmap = Bitmap.createBitmap(bas, 0, 0, wdy, hdx, matrix, true); imageView.setImageBitmap(bitmap); imageView.invalidate(); */ } } break; case MotionEvent.ACTION_UP:// 有手指离开屏幕 if (mode == DRAG) { if (flag == 1) { dx = 0; } if (flag == 2) { dx = enddx - startdx; } if (dx > 20f) { if (index > 0) { index--; imageSwitcher.setImageDrawable(bmd[index]); // 显示当前图片 } else { index = lth - 1; imageSwitcher.setImageDrawable(bmd[index]); // 显示当前图片 } } else if (dx < -20f) { if (index < lth - 1) { index++; imageSwitcher.setImageDrawable(bmd[index]); // 显示当前图片 } else { index = 0; imageSwitcher.setImageDrawable(bmd[index]); // 显示当前图片 } } else { } } break; case MotionEvent.ACTION_POINTER_UP :// 有手指离开屏幕,但还有手指在 mode = 0; break; case MotionEvent.ACTION_POINTER_DOWN: mode = ZOOM; startDis=distance(event); if(startDis>10f){ midPoint=mid(event); currentMatrix.set(imageView.getImageMatrix());//记录当前的缩放倍数 } break; } return true; } }
相关分类