Android ImageView.ScaleType有圖有真相

來源:互聯網
上載者:User

標籤:映像   android   imageview   矩陣   

本來沒打算寫這篇關於ScaleType的文章的,畢竟網上一大把,但是考慮到接下來的PhotoView源碼的解析會用到這方面的知識,又不想讓讀者們再去費力去找別的相關文章,而且有的文章的講解都是錯的,所以就在這裡講解一下ImageView.ScaleType的幾種不同類型究竟有什麼區別,我們在實際使用的時候究竟應該採用哪一種

  • 使用方法

    • xml中:android:scaleType=”類型”
    • java代碼中:imageview.setScaleType(類型)

      注意這個屬性只有和ImageView搭配才有作用

  • 類型作用
    • matrix:用矩陣繪圖,從原映像的原點開始,盡量去充滿ImageView控制項的大小,實在充滿不了又沒有對matrix設定scale就會在ImageView上顯示一段沒有映像的地區
    • fitXY:暴力展開或縮放,即不考慮圖片的比例失調,每個方向獨立地展開或者縮放到ImageView的大小,這種情況片很有可能會比例失調,ImageView全部被映像充滿,這也是這幾種類型中唯一會不按比例調整圖片大小的類型,所以一般不用
    • fitStart:按比例展開或縮放,可以考慮變換的漸進過程,即按比例放大或縮小映像,直至整個映像都在ImageView的顯示地區內,然後把調整後的映像從ImageView的左上方開始放,即映像的上邊緣和ImageView的上邊緣對齊(除去padding)
    • fitCenter:同fitStart,只不過把調整後的映像放在ImageView的中間
    • fitEnd:同fitStart,把調整後的映像放在ImageView靠下的地方,使得映像的下邊緣和ImageView的下邊緣對齊(當然也要除去padding)
    • center:保持原映像大小,不對映像展開和縮放,直接把映像放在ImageView的中間,映像大的話就截取映像中間的部分
    • centerCrop:按比例展開和縮放,保證映像的寬和高分別都<=ImageView的寬和高,然後把調整後的映像放在ImageView中間,這種情況下ImageView可能會有沒被映像覆蓋的部分
    • centerInside:按比例展開和縮放,保證映像的寬和高分別都>=ImageView的寬和高,然後把調整後的映像放在ImageView中間,此時整個ImageView都是覆蓋著映像的
  • 類型總結
    ScaleType一共有8種類型,怎麼才能記住這幾種類型的特徵呢,這裡我們應用分類的思想,從這幾種方式中選取有共同之處的放在一類中,所以我把他們分成三類:
    • fit合身類:fit*這種都屬於這一類,這一類的特點是會保證在ImageView的顯示範圍之外不會有映像繪製,即映像全部在ImageView內顯示,不論他是否比例變化,放在ImageView的什麼位置
    • center置中類:center*這種的類型,這一類的特點是會保證映像都在ImageView的中間,當然也可以是整個ImageView
    • matrix:這個比較特殊,也最常用,所以下一篇部落格就專門講解一下matrix


  • 原圖片比ImageView的尺寸大的


    原圖片比ImageView的尺寸小的

原諒我太懶~~~,來自於http://blog.csdn.net/xilibi2003/article/details/6628668

看完了這些是不是對ScaleType有了清晰的認識了呢,希望大家能在以後的項目中正確選擇自己需要的類型,當然很多情況下直接用.9.png更方便一些

Android ImageView.ScaleType有圖有真相

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.