2012-07-30 114 views
0

我看到這個同一主題的許多問題,並通過使用如何通過保持寬高比在ImageView中填充圖像?

android:adjustViewBounds="true" 
android:scaleType="fitCenter" 

還是我的圖像顯示嘗試,因爲它我is.If改變

機器人:scaleType =「fitCenter」

fitXY工作正常。但根據文件這一個不保持寬高比。所以我怎樣才能改變代碼工作如預期?

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical"> 

    <LinearLayout 
     android:id="@+id/card" 
     android:layout_marginTop="25dp" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:background="@drawable/card" > 

     <ImageView 
      android:id="@+id/idImage" 
      android:layout_width="fill_parent" 
      android:layout_height="110dp" 
      android:layout_margin="10dp" 
      android:adjustViewBounds="true" 
      android:scaleType="fitCenter" 
      android:src="@drawable/783454" /> 

    </LinearLayout> 

</LinearLayout> 

![在這裏輸入的形象描述] [1] ![在這裏輸入的形象描述] [2] 凡IAM缺少概念?

+0

什麼是您預期的結果? – kcoppock 2012-07-30 16:09:19

+0

像保持寬高比的第二屏。 – ADIT 2012-07-30 16:19:29

+2

你......不能。保持寬高比,左圖像的大小可以達到。爲了讓它更高,你必須使它比屏幕更寬。 – kcoppock 2012-07-30 16:22:15

回答

0

請看這段代碼,這是我如何縮放位圖以適合屏幕。也許這會對你的工作有所幫助並給你提供建議。

private void loadImage() { 
    ImageView imageView = (ImageView)findViewById(R.id.imageView); 

    Bitmap imageBitmap = ... load original image bitmap; 

    Bitmap scaledBitmap = imageBitmap; 

    // Scaling 

    int imgSrcHeight = imageBitmap.getHeight(); 
    int imgSrcWidth = imageBitmap.getWidth(); 

    int scaledHeight = 0; 
    int scaledWidth = 0; 

    int ctnrHeight = imageView.getMeasuredHeight(); 
    int ctnrWidth = imageView.getMeasuredWidth(); 

    int mHeight = imgSrcHeight - ctnrHeight; 
    int mWidth = imgSrcWidth - ctnrWidth; 

    if(mHeight > 0 && mWidth > 0) 
    { 
     if(mHeight > mWidth) 
     { 
      // scale to fit height 
      if(mHeight > 0) 
      { 
       scaledHeight = ctnrHeight; 

       // if height < 0 it means it's already inside of content 
       int coefOverhight = (ctnrHeight * 100)/imgSrcHeight; 
       scaledWidth = (int)(imgSrcWidth * ((coefOverhight)/100.0)); 
      } 
     } 
     else 
     { 
      // scale to fit width 
      if(mWidth > 0) 
      { 
       scaledWidth = ctnrWidth; 
       int coefOverwidth = (ctnrWidth * 100)/imgSrcWidth; 
       scaledHeight = (int)(imgSrcHeight * ((coefOverwidth)/100.0)); 
      } 
     } 
    } 
    else 
    { 
     scaledHeight = imgSrcHeight; 
     scaledWidth = imgSrcWidth; 
    } 

    scaledBitmap = Bitmap.createScaledBitmap(imageBitmap, scaledWidth, scaledHeight, true); 


    imageView.setImageBitmap(scaledBitmap); 

}

相關問題