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;
}
}
目前暂无任何回答
- 0 回答
- 0 关注
- 3388 浏览
添加回答
举报
0/150
提交
取消