android tips主要講解平時(shí)在開發(fā)中的一些常用有比較容易讓人忽略的問題或者是個(gè)人建議楞卡。知識(shí)比較雜,但是好多人可能看到過勾邦,但沒有仔細(xì)想,研究..........割择【炱可以開始了。
tips-one: scaleType?
? 我在設(shè)置ImageView圖片的大小時(shí)锨推,scaleType屬性值經(jīng)常被用到铅歼,比如:設(shè)定Imageview的固定大小為50dpx60dp,實(shí)際圖片大小為30dpx40dp那么我就會(huì)使用這個(gè)屬性:android:scaleType="fitXY"只知道會(huì)填充滿imageview换可,但不知道具體啥意思椎椰,今天我們就來了解一下,這么做對(duì)不對(duì)沾鳄,不對(duì)慨飘,應(yīng)該怎么用?
ok,我們一個(gè)一個(gè)來: ?我們先準(zhǔn)備兩張圖片,對(duì)比參考瓤的,以往是xml設(shè)置休弃,我們這次改為代碼設(shè)置屬性。先準(zhǔn)備兩張圖片:一個(gè)高分辨率大圖400x300圈膏,一個(gè)低分辨率的小兔70x70.
(1)設(shè)置Imageview的寬高為90dp設(shè)置android:scaleType="matrix"塔猾,代碼:
效果:
?總結(jié):matrix表示原圖從ImageView的左上角開始繪制,如果原圖大于ImageView稽坤,那么多余的部分則剪裁掉丈甸,如果原圖小于ImageView,那么對(duì)原圖沒有變化尿褪,但會(huì)有部分區(qū)域沒有填充圖片睦擂。
(2)ScaleType="fitXY",只需要更改 ??setScaleType(ImageView.ScaleType.FIT_XY);
效果如下:
總結(jié):
fitxy屬性值:fitXY的目標(biāo)是填充整個(gè)ImageView杖玲,顿仇,它需要對(duì)圖片進(jìn)行一些縮放操作,在縮放的過程中摆马,它不會(huì)按照原圖的比例來縮放臼闻,存在變形,無法適配今膊。
(3)scaletype="fitStart"些阅,setScaleType(ImageView.ScaleType.FIT_START);
效果:
總結(jié):將圖片按比例縮放至View的寬度或者高度取寬和高的大值后居上或者居左顯示,那么效果圖中的samll圖片為什么沒有有部分區(qū)域是背景色呢斑唬,因?yàn)閷捄透咧凳且粯拥穆?/i>
(4)scaletype="fitcenete".setScaleType(ImageView.ScaleType.FIT_CENTER);
效果如下:
?總結(jié):和fitstart一樣按比例進(jìn)行縮放市埋,fitsatart縮放后居上或者居左顯示而fitcenter是縮放后居中顯示。
(5)scaletype="fitend",setScaleType(ImageView.ScaleType.FIT_END);
效果如圖:
總結(jié):和fitstart都是按比例縮放恕刘,fitstart是縮放后居上或者居左而fitend的是縮放后居下或者居右缤谎。
(6)scaleTypt="center" ?代碼:.setScaleType(ImageView.ScaleType.CENTER);
效果如下:
總結(jié):center表示將原圖按照原來的大小居中顯示,如果原圖的大小超過了ImageView的大小褐着,那么剪裁掉多余部分坷澡,只顯示中間一部分圖像,沒有等比例縮放含蓉。
(7)scaletype="centerCrop",代碼:setScaleType(ImageView.ScaleType.CENTER_CROP);
效果如圖所示:
總結(jié):centerCrop的目標(biāo)是將ImageView填充滿频敛,故按比例縮放原圖,使得可以將ImageView填充滿馅扣,同時(shí)將多余的寬或者高剪裁掉斟赚。
(8)scaletype="centerInsid",代碼:setScaleType(ImageView.ScaleType.CENTER_INSIDE);
效果如下:
總結(jié):centerInside的目標(biāo)是將原圖完整的顯示出來,故按比例縮放原圖差油,使得ImageView可以將原圖完整顯示和fitcenter有點(diǎn)類似拗军。
補(bǔ)充:Matrix還有別的重要用法:
該模式還可以與ImageView.setImageMatrix(Matrix matrix)配合使用任洞,因?yàn)樵撃J叫枰糜谥付ㄒ粋€(gè)變換矩陣用于指定圖片如何展示。其實(shí)前面的7種模式都是通過ImageView在內(nèi)部生成了相應(yīng)的變換矩陣发侵,等于是提供了該模式的一種特定值交掏,使用這個(gè)模式只要傳入相應(yīng)矩陣,也就能實(shí)現(xiàn)上述七種顯示效果刃鳄。
代碼:
效果:
完畢盅弛!