為什么矢量圖放大還是會模糊

矢量圖(SVG)在Android系統中通過VectorDrawable來使用,但是在使用矢量圖的時候還是發虛(變模糊了)

分析原因

兩個代碼

  1. VectorDrawable

    在 draw函數中,先獲取Drawable的大小,然后根據這個尺寸來繪制圖形,這樣繪制的圖形是不會模糊的。

    所以可以看到問題不是出現在 VectorDrawable的。

  2. ImageView

    在 configureBounds 函數中,根據View的大小來修改圖片大小,但是具體如何修改的,是根據 ScaleType來決定的。

    如果 scaleType 為 ScaleType.FIT_XY ,則直接修改 Drawable 的 bounds

    而其他情況,則是由 mMatrix 來縮放 mDrawable。

    也就是說 **如果ImageView 的scaleType 不是 FIT_XY, 并且矢量圖原本的尺寸不是 0(在xml中定義,是不可能為0的)的話,則ImageView會先通過矢量圖原來的大小來得到一個圖標,然后這個圖標通過 matrix 的方式來縮放,所以最終繪制的圖標就是被縮放過的圖標了。而ImageView默認的 scaleType的默認值為 FIT_CENTER **

    解決方式:

    將ImageView 的 ScaleType 為 FIT_XY 即可

解決方式

  1. 將ImageView 的 ScaleType 為 FIT_XY 即可
  2. 修改矢量圖中的尺寸定義,把圖標的寬度和寬度修改為比較大的值,這樣可以保證ImageView只是 縮小圖標而不會放大圖標,從而避免由于放大圖標導致的圖標模糊的問題
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 1. 矢量圖SVG簡介 Android 5.0系統中引入了 VectorDrawable 來支持矢量圖(SVG),...
    登高且賦閱讀 2,628評論 2 15
  • 效果圖: Github鏈接:https://github.com/boycy815/PinchImageView ...
    CQ_TYL閱讀 2,245評論 0 0
  • 手勢圖片控件 PinchImageView 點擊圖片框架 photoView packagecom.example...
    Ztufu閱讀 740評論 0 1
  • 最近在研究圖片加載庫,趁機找時間學習下ImageView的源碼,探究下它內部機制,同時學習下View的封裝思想。 ...
    guobin_xu閱讀 5,340評論 0 13
  • 天空 扔下一大片一大片的白 獨自轟轟烈烈 藍出無邊的孤獨 深邃如海洋 蒼穹下 是止不住的寂靜蔓延 一條孤船 靜坐于...
    金指尖的花園閱讀 217評論 0 3