2014-06-27 121 views
0

我有一個TableLayout的單元格爲ImageView s。我想要做的是通過增加表格中的ImageView s的大小來創建縮放效果。這適用於縮小(圖片大小調整爲ImageView),但問題在於放大。圖片不會在ImageView變大時調整大小。ImageView圖像不調整與ImageView的大小

下面是一個例子: enter image description here

我想要的圖像是尺寸爲ImageView的相同(每個黑色方塊是一個ImageView的)

這裏是我的變焦代碼(在任何提示更好的實施將不勝感激,不想使用捏縮放)。

zoomIndex ranges from -2, 2. (only allow them to zoom twice in each direction) 
zoomInThreshold = 2, zoomOutThreshold = -2. 
defaultSize = 50, zoomIncrement = 15; 


       if(zoomIndex < zoomInThreshold) 
        defaultSize += zoomIncrement; 


       for(int i = 0; i < table.getChildCount(); ++i) 
       { 
        TableRow row = (TableRow)table.getChildAt(i); 
        for(int r = 0; r < row.getChildCount(); ++r) 
        { 
         ImageView img = (ImageView)row.getChildAt(r); 

         if(zoomIndex < zoomInThreshold) 
         { 
          TableRow.LayoutParams imgLayoutParams = new TableRow.LayoutParams(
            defaultSize, 
            defaultSize 
          ); 
          img.setLayoutParams(imgLayoutParams); 

          if(img.getDrawable() != null) 
          { 
           img.setAdjustViewBounds(true); 
           img.setMaxHeight(defaultSize); 
           img.setMaxWidth(defaultSize); 
           img.setScaleType(ImageView.ScaleType.CENTER_INSIDE); 
          } 
         } 
        } 
       } 
       if(zoomIndex < zoomInThreshold) 
        zoomIndex++; 
+0

你應該爲此提供賞金:) –

+0

我只能在2天內開始賞金 – john

回答

0

想通了這個問題,這個問題只發生在我從xml文件加載繪圖時發生。我所要做的就是加載圖紙

img.setAdjustViewBounds(true); 

時,這是它如何適應加入這一行:

   if(drawableID != -1) 
       { 
        Bitmap pic = BitmapFactory.decodeResource(getResources(), drawableID); 
        Bitmap resizedBitmap = Bitmap.createScaledBitmap(pic, 50, 50, true); 
        im.setImageBitmap(resizedBitmap); 

        ic.setImage(im); 

        im.setTag(ic); 

        im.setAdjustViewBounds(true); 

        //rotate the icon 
        im.setScaleType(ImageView.ScaleType.MATRIX); 
        Matrix matrix = new Matrix(); 
        matrix.set(im.getImageMatrix()); 
        matrix.postRotate(rotAngle, pic.getWidth()/2, pic.getHeight()/2); 
        im.setImageMatrix(matrix); 

        im.setOnLongClickListener(longListen);//only set this listener if there is something there 
       } 

我只有在我的變焦按鈕按img.setAdjustViewBounds(true);

相關問題