2013-08-26 147 views
0

我有一個任務捏和縮放imageview,我做了一個應用程序,我刷圖像,它工作正常;現在我想在同一個類上捏和縮放imageview;但是我無法做到這一點。我已經通過各種示例,但在這種情況下似乎沒有任何幫助。下面是我的代碼,或者提供了另一個示例對於這個問題。捏和縮放imageview

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); 
    } 
+1

試試這個圖書館https://github.com/chrisbanes/PhotoView –

+0

已經做了這個使用[一個鏈接](http://www.allappsdevelopers.com/TopicDetail.aspx? TopicID = c16ed3b4-b422-43ba-b595-ee8e21dd1854)。謝謝大家 – user2561559

回答

1

我必須將相同的功能集成到我的應用程序中。

但正如我們所知,zoomable ImageView在android中不可行。

我使用下面庫: https://github.com/sephiroth74/ImageViewZoom

試試這個。可能會幫助你... :)

+1

使用[鏈接]完成了此操作(http://www.allappsdevelopers.com/TopicDetail.aspx?TopicID=c16ed3b4-b422-43ba-b595- ee8e21dd1854)。謝謝大家 – user2561559