我有一個 3264x1836 的影像,我將它顯示在一個尺寸為 1280x720 的自定義 AppCompatImageView 中。我想保留影像大小,所以我使用ScaleType.CENTER,但我也希望它的左上角位于我的自定義視圖的坐標 0,0 處,所以我相應地設定了左邊和頂部的填充。
現在,為了實作這一點,我必須使用 3264-1280(寬度之間的差異)作為左填充,使用 1836-720(高度之間的差異)作為頂部填充,而在我看來,這些值都應該除以 2 .
有人能解釋一下為什么嗎?
uj5u.com熱心網友回復:
您很可能會要求AppCompatImageView執行一些未預料到或未經過測驗的操作,從而破壞了它的代碼。
雖然上述情況仍然成立,但您應用的填充是正確的。以下是計算:
為簡單起見,讓我們看一下移動圖形所需的左填充。相同型別的計算適用于頂部填充。
圖形的寬度大于ImageView的寬度。
d = w圖形- w影像視圖
如果圖形在ImageView 中居中,則左右兩側的懸垂將是寬度差的 1/2。
s = d / 2
圖形在ImageView 的內邊距內居中。必須指定的填充量必須剛好足以將圖形的中心移動s量。
沒有填充的ImageView的初始中心是
c i = w影像視圖/ 2
左填充( p )的移動中心是
c s = p (w imageview - p) / 2
所以,
s = c s - c i = p (w imageview - p) / 2 - (w imageview / 2)
求解移位 s 所需的填充,我們得到 p = 2s = d。換句話說,我們需要的填充是您所看到的所需移位的兩倍。
不涉及填充的修復是指定
android:scaleType="matrix"
您應該洗掉填充。新的比例型別會將單位矩陣應用于影像并將其放置在上/左角而不調整大小。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/373529.html
