简体   繁体   中英

Pinch and Zoom imageview

I have a task to pinch and zoom the imageview, I have made an app where I am swiping the images and it is working fine; now I want to Pinch and Zoom the imageview on the same class ;but I am not able to do this.I have gone through various example but it seems nothing is helping in this case.Below is my code,or provide me some another example for this problem.

imageView.setOnTouchListener(new OnTouchListener() {        
        @Override
 public boolean onTouch(View view, MotionEvent event) { 
 bitmap = BitmapFactory.decodeResource(context.getResources(), image_id[position]);
  bmpWidth = bitmap.getWidth();
  bmpHeight = bitmap.getHeight();
  distCurrent = 1; 
  dist0 = 1;
  drawMatrix();
  float distx, disty;
   switch(event.getAction() & MotionEvent.ACTION_MASK){
   case MotionEvent.ACTION_DOWN:
    //A pressed gesture has started, the motion contains the initial starting location. 
    touchState = TOUCH;
    break;
   case MotionEvent.ACTION_POINTER_UP:
        //A non-primary pointer has gone up. 
        touchState = TOUCH;
        break;
   case MotionEvent.ACTION_POINTER_DOWN:
    //A non-primary pointer has gone down. 
    touchState = PINCH;

    //Get the distance when the second pointer touch
    distx = event.getX(0) - event.getX(1);
    disty = event.getY(0) - event.getY(1);
    dist0 = FloatMath.sqrt(distx * distx + disty * disty);

    break;
   case MotionEvent.ACTION_MOVE:
    //A change has happened during a press gesture (between ACTION_DOWN and ACTION_UP).

    if(touchState == PINCH){      
     //Get the current distance
     distx = event.getX(0) - event.getX(1);
     disty = event.getY(0) - event.getY(1);
     distCurrent = FloatMath.sqrt(distx * distx + disty * disty);

     drawMatrix();
    }

    break;
   case MotionEvent.ACTION_UP:
    //A pressed gesture has finished.
    touchState = IDLE;
    break;
   }
  touchState = IDLE;
            return true;
        }
    });





private void drawMatrix(){
     float curScale = distCurrent/dist0;
     if (curScale < 0.1){
      curScale = 0.1f; 
     }

     Bitmap resizedBitmap;    
     int newHeight = (int) (bmpHeight * curScale);
     int newWidth = (int) (bmpWidth * curScale);
     System.out.println("new width: "+newWidth+" new heigt: "+newHeight);
     resizedBitmap = Bitmap.createScaledBitmap(bitmap, newWidth, newHeight, false);
     System.out.println("resized bitmap: "+resizedBitmap);
     imageView.setImageBitmap(resizedBitmap); 
    }

I have to integrate the same functionality into the my application.

But as we know zoomable ImageView is not possible in android.

I have use the following library: https://github.com/sephiroth74/ImageViewZoom

Try this. May be helps you...:)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM